从用户获取输入字符串后,输出包含一些其他字符

时间:2015-05-29 06:03:39

标签: c arrays string gets puts

我减速了一个字符矩阵

char strs[3][200] = {'\0'};

然后尝试为第一行插入字符串

gets(strs[0]);

然后尝试打印所有行

printf("1) ");
puts(strs[0]);
printf("2) ");
puts(strs[1]);
printf("3) ");
puts(strs[2]);

结果是

1) ☺me input from the user
2) ☺
3) ☺

为什么结果中有“笑脸”?

2 个答案:

答案 0 :(得分:1)

这有效

#include <stdio.h>

int main()
{
    char str[3][200]={{'\0'},{'\0'},{'\0'}};

    fgets(str[0], 200, stdin);
    fgets(str[1], 200, stdin);
    fgets(str[2], 200, stdin);

    fputs(str[0], stdout);
    fputs(str[1], stdout);
    fputs(str[2], stdout);


    return 0;
}

在您的代码中,您只初始化了第一个元素/字符串。然后当你的字符串中有垃圾时。

答案 1 :(得分:-1)

  

看起来初始化时出了点问题。

试试这个

char options[2][100];

    options[0][0]='t';
    options[0][1]='e';    
    options[0][2]='s';
    options[0][3]='t';
    options[0][4]='1';
    options[0][5]='\0';

        printf("1) ");
        puts(options[0]);
  

输出将是:

1) test1