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

C 从用户获取输入字符串后,输出包括一些其他字符,c,arrays,string,gets,puts,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) ☺ 为什么结果中会有“笑脸”☺? 看起来初始化时出现了一些问题 试试这个 c

我使一个字符矩阵减速

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) ☺
为什么结果中会有“笑脸”☺?

看起来初始化时出现了一些问题

试试这个

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]);
结果将是:

这很有效

#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;
}
#包括
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);
fput(str[1],stdout);
fput(str[2],stdout);
返回0;
}

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

get()
是危险的。改用
fgets()
。试试
char strs[3][200]={{{{\0}。如果这不起作用,那么提供一个。顺便说一句,你的输入和结果不匹配。你从哪里得到第四个输出?源文件似乎包含一些wierd字符。笑脸是DOS字符集中代码为1和2的字符。你是不是在尝试一些你没有展示给我们的奇特的东西,比如递增的
strs[0][0]++
或类似的东西?@LPs:那么作为
strs[3][200]
初始化的
strs[0]
是什么。我的错误。开始思考之前需要咖啡:)
#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;
}