C語言字符串數組,該數組作爲結構體的成員之一,但由於是柔性數組,所以只能作爲結構體的最後一個成員。
結構體類型所佔的空間不包括柔性數組。
因爲爲結構體分配內存時要注意。例子如下:
typedef struct Sys
{
int a;
char* name[];
}Sys;
結構體的定義如上。
當知道字符串數組要保存的字符串個數後,開闢空間,如下,數組大小爲3:
Sys sys=malloc(sizeof(Sys)+3*sizeof(char*));
接下來,可用for循環,爲數組的每個元素開闢空間
int i;
for(i=0;i<3;i++)
{
sys->name[i] = malloc(16);
}
再用strcpy對數組元素進行賦值
for(i = 0;i<3 ;i++)
{
strcpy(sys->name[i],"name");
}
避免出錯,最好不要將包含柔性數組的結構體再包含到另一個結構體中,即不要將包含柔性數組的結構體再嵌入到另一個結構體裏,最後將包含柔性數組的結構體獨立出來。
記得開闢內存後需要對內存進行釋放。
另外對於讀寫文件來說,在Src下的.c文件裏編寫代碼,當前目錄指的是與Src同一級的目錄,而不是與.c文件同一級的目錄。
讀寫文件時,文件可以不存在,但是目錄要存在,否則會失敗。
總之,確保你理解的目錄和程序理解的目錄的位置是一致的。