C 使用 strcpy 问题替换二维字符数组中的字符串
C Replace a string from a 2d char array using strcpy Issue
为什么当我 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;
}
当然 newword
不能保存字符串(空字符串除外),因为它只是一个字符,不是数组。像你一样将它与 scanf()
一起使用是未定义的行为。
成功:
char newword[20];
例如,最好也是 scanf(" %19s", newword);
,并检查 scanf()
是否成功。
您的代码 char newword; ... scanf("%s",&newword)
产生未定义的行为;您将一个字符串读入一个包含单个字符的变量;从那时起,所有赌注都取消了。
写char newword[100]; ...
,事情应该会做得更好。
为什么当我 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;
}
当然 newword
不能保存字符串(空字符串除外),因为它只是一个字符,不是数组。像你一样将它与 scanf()
一起使用是未定义的行为。
成功:
char newword[20];
例如,最好也是 scanf(" %19s", newword);
,并检查 scanf()
是否成功。
您的代码 char newword; ... scanf("%s",&newword)
产生未定义的行为;您将一个字符串读入一个包含单个字符的变量;从那时起,所有赌注都取消了。
写char newword[100]; ...
,事情应该会做得更好。