C 使用 strcpy 问题替换二维字符数组中的字符串



为什么当我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]; ...,事情应该做得更好。

最新更新