为什么在我printf("%s\n",array[0])
而非"Hello"
时打印出新单词减去第一个字符。有关如何解决的任何提示?
提前谢谢!
#include <stdio.h>
#include <string.h>
int main()
{
char newword;
char array[100][20]={
{'H','e','l','l','o'},
{'W','o','r','l','d'},
};
printf("%s\n",array[0]);
printf("%s\n",array[1]);
printf("Type a new word: ");
scanf("%s",&newword);
strcpy(array[1],&newword);
printf("%s\n",array[0]);
printf("%s\n",array[1]);
return 0;
}
答案 0 :(得分:2)
当然height
无法保存字符串(空字符串除外),因为它只是一个字符,而不是数组。与newword
一样使用它就是未定义的行为。
成功:
scanf()
例如,最好也是char newword[20];
,并检查scanf(" %19s", newword);
是否成功。
答案 1 :(得分:0)
您的代码char newword; ... scanf("%s",&newword)
会产生未定义的行为;你在字符串中读入一个包含单个字符的变量;从那时起,所有赌注都已关闭。
写char newword[100]; ...
,事情应该做得更好。