我正在尝试在C中读取一串字符: 如果我使用gets,编译器不会读取我的单词,因为它认为ENTER是我的字符串,我猜。我尝试使用
scanf("%*c")
但是如果我这样做并输入“flower”,变量会存储字符串“lower”。如果我使用
scanf("%s",s)
然后编译器在击中空格后不会存储任何内容。 如果我使用
fgets(s,20,stdin)
我有完全相同的问题,好像我使用了获取。 我该怎么办?
答案 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值定义的字符。