簡體   English   中英

字符串數組在C中保留打印最后一個條目

[英]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] enteredstring[j]

     strcmp(string[j], entered);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM