C使用strcpy Issue替换2d char数组中的字符串

时间:2018-04-17 10:43:28

标签: c arrays 2d strcpy

为什么在我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;
 }

2 个答案:

答案 0 :(得分:2)

当然height无法保存字符串(空字符串除外),因为它只是一个字符,而不是数组。与newword一样使用它就是未定义的行为。

成功:

scanf()
例如

,最好也是char newword[20]; ,并检查scanf(" %19s", newword);是否成功。

答案 1 :(得分:0)

您的代码char newword; ... scanf("%s",&newword)会产生未定义的行为;你在字符串中读入一个包含单个字符的变量;从那时起,所有赌注都已关闭。

char newword[100]; ...,事情应该做得更好。