要想知道這個,你應該嘗試瞭解輸入。如果您確信5人只有9個字段(單個字符數據),那麼您應該將其設置爲char input[5][9]
。
如果您認爲將來可能會有更多的信息字段超過9,那麼您可以使用更高的值,例如char input[5][256]
。但是,如果字段的數據稀疏,這會浪費很多空間。這是內存靜態分配
所以,當你不能確定每個人的字段數第三個選項,是分配內存中動態like--
char* input[5];
input[0] = malloc(sizeof(char) * 100); // space of 100 chars
在最後一種情況下
這裏,存儲器是在運行時而不是編譯時給出的。您還可以從用戶輸入中獲取大小並將其用於爲字段分配內存。
char* input[5];
int size = 0;
scanf("%d",&size);
input[0] = malloc(sizeof(char) * size);
此外,如果您需要存儲字段,其中每個字段需要多個字符,那麼您應該創建一個結構。
struct person
{ char name[30]; // memory could be assigned dynamically or statically
char field1[30];
char field2[30];
...
};
來源
2013-10-01 01:29:20
hrv
請注意,這些方法,你應該始終確保用戶輸入將適合分配的內存,即在第一種情況下進入'person.name'超過49個字符會導致不確定的行爲的名稱 – Pankrates
@Pankrates很好,謝謝。我忘了將它添加到我的答案中。 – streppel