C語言柔性數組

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文件同一級的目錄。

讀寫文件時,文件可以不存在,但是目錄要存在,否則會失敗。

總之,確保你理解的目錄和程序理解的目錄的位置是一致的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章