c - c中的字符输入
问题描述
我正在尝试读取输入字符,直到它是'a'。但是我需要输入所有字符直到a。问题是它也将换行作为一个字符。即当我按下一个字符(比如 f)回车时它在下一个循环中使用 f 以及换行符。
#include<stdio.h>
int main()
{
char val;
while(1)
{
printf("\nenter val: (a to stop)");
scanf("%c",&val);
printf("val is %d\n",(int)val);
if(val=='a')
break;
else
continue;
}
return 0;
}
输出:
enter val: (a to stop)f
val is 102
enter val: (a to stop)val is 10
enter val: (a to stop)
解决方案
这是实现您想要的相同逻辑的另一种方式。您可以在使用时在格式说明符之前添加一个空格scanf()
scanf(" %c",&val);
前导空格告诉scanf()
在读取下一个字符之前跳过任何空白字符(包括换行符)。
正如他们中的许多人建议的那样,您可以使用fgets
or fgetc
。