[英]String Array Keeps Printing Last Entry in C
我不太明白為什么當我運行代碼時,輸入5個不同的字符串,它打印字符串[0]作為我輸入的最后一個字符串:
例如,如果我輸入:
是
沒有
它會打印:
檢查是的
是
是
檢查號碼
沒有
沒有
甚至索引= 0
int main(void) {
char *string[5];
char entered[11];
for(int j = 0; j < 5; j++) {
scanf("%s", &entered);
string[j] = entered;
printf("Check %s\n",entered);
printf("%s\n",string[j]);
printf("%s\n",string[0]);
}
return 0;
}
我的目的是將每個字符串條目保存到數組中。
所以對於我的例子,我想:
檢查是的
是
是
檢查號碼
沒有
是
我不被允許使用malloc等。
這一行:
string[j] = entered;
不會將entered
字符復制到string[j]
; 相反,它將string[j]
為指向entered
數組的內存位置。
您需要通過編寫(例如)來為string
數組中的string
分配內存:
char string[5][11];
代替
char *string[5];
然后你需要通過寫(例如)來復制從string[j]
entered
的string[j]
:
strcmp(string[j], entered);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.