0

我希望输入带空格的字符串。while( (c = getchar()) != '\n' && c != '\0');我使用了gets(),已经处理了可能会产生问题的换行符[使用]。但是第一个gets() 输入了一些杂散字符!另外,如果我使用scanf( "%[^\n]s", a)而不是gets()存储一些随机字符串!有人可以帮我找出原因吗?

这是代码:

printf(" \n Enter the string");
while( (c =getchar()) != '\n' && c != '\0');
gets(a); // some garbage string is stored in a....if i replace it with scanf()...then                    also garbage string is stored 

printf(" \n The ENTERED  string is %s", a);


printf("\n Enter the substring to be extracted (max 20)  ");
while( (c =getchar()) != '\n' && c != '\0');
gets(sub);
4

1 回答 1

1

这对我有用;我使用了一个短缓冲区来检查如果输入字符串溢出输入缓冲区(溢出被缓冲stdin到下一次调用fgets,正如流中所预期的那样),是否不会发生任何不良情况。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    char a[32];
    for (;;) {
            printf("Enter the string:\n");
            fgets(a, sizeof(a), stdin);
            strtok(a, "\r\n");
            printf("The entered string is '%s'\n", a);
    }
}
于 2013-08-18T11:14:06.853 回答