字符串数组在C中保留打印最后一个条目

时间:2012-03-24 02:59:27

标签: c

我不太明白为什么当我运行代码时,输​​入5​​个不同的字符串,它会输出string [0]作为我输入的最后一个字符串:

例如,如果我输入:


没有

它会打印出来:


检查是的


检查否
没有
没有

甚至对于index = 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 ......等。

1 个答案:

答案 0 :(得分:2)

这一行:

     string[j] = entered;

不会将字符从entered复制到string[j];相反,它将string[j]设置为指向entered数组的内存位置。

您需要通过写(例如)来为string数组中的字符串分配内存:

char string[5][11];

而不是

char *string[5];

然后你需要通过写(例如)来复制来自entered的{​​{1}}中的字符:

string[j]