为什么当我printf("%sn",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("%sn",array[0]);
printf("%sn",array[1]);
printf("Type a new word: ");
scanf("%s",&newword);
strcpy(array[1],&newword);
printf("%sn",array[0]);
printf("%sn",array[1]);
return 0;
}
当然newword
不能保存字符串(空字符串除外(,因为它只是一个字符,而不是数组。像您一样将其与scanf()
一起使用是未定义的行为。
来得及:
char newword[20];
例如,最好也scanf(" %19s", newword);
,并检查scanf()
是否成功。
您的代码char newword; ... scanf("%s",&newword)
产生未定义的行为; 您将字符串读入包含单个字符的变量;从那时起,所有的赌注都关闭了。
写char newword[100]; ...
,事情应该做得更好。