使用get in c编程是错误的

时间:2014-01-19 11:07:45

标签: c fgets gets

我正在尝试在C中读取一串字符: 如果我使用gets,编译器不会读取我的单词,因为它认为ENTER是我的字符串,我猜。我尝试使用

scanf("%*c") 

但是如果我这样做并输入“flower”,变量会存储字符串“lower”。如果我使用

scanf("%s",s)

然后编译器在击中空格后不会存储任何内容。 如果我使用

fgets(s,20,stdin)

我有完全相同的问题,好像我使用了获取。 我该怎么办?

3 个答案:

答案 0 :(得分:1)

如果换行符位于字符串末尾,只需“删除”换行符:

if (fgets(s, 20, stdin) != NULL)
{
    while (strlen(s) > 0 && s[strlen(s) - 1] == '\n')
        s[strlen(s) - 1] = '\0';
}

答案 1 :(得分:0)

您可以使用getchar()ungetchar()来解决此问题,例如:

char c;   
while((c=getchar())<=' ');
ungetchar(c);

上面的代码会删除任何不需要的空格或在字符串前输入,然后您可以gets按需要

答案 2 :(得分:0)

scanf()不会在空格后读取字符串。简而言之,它读取连续字符串,但fgets()被定义为读取字符(也是空格)。在我的编译器Dev-C ++&amp; 64位操作系统,fgets()正在读取包括空格在内的字符。注释空间也是用ASCII值定义的字符。