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]; ...,事情应该会做得更好。