我是C编程语言的新手,我编写了一个简单的代码,可以读取两个“ char”值并将其打印在屏幕上,但是第二个由于奇怪的原因而获得了空值。我的代码出了什么问题?
Char c;
Scanf(“%c”,&c);
Printf(“Value:%c”,c);
Scanf(“%c”,&c);
Printf(“Value:%c”,c);
输出:值:g值:
(这是评论,但评论很难格式化)
您的代码没有任何问题(除了无法检查scanf返回的值并处理错误或错误输入之外)。考虑:
#include <stdio.h>
int
main(void)
{
char c;
scanf("%c",&c);
printf("Value:%c",c);
scanf("%c",&c);
printf("Value:%c",c);
return 0;
}
$ gcc a.c
$ printf 'abc' | ./a.out
Value:aValue:b
也许“错误”是您在输入中包含换行符。 (例如,您正在以交互方式输入数据,而忘记了在单击“返回”时会在输入流中插入换行符。)
[如果您的目标是读取两个“有趣的”字符,并且如果您不认为空格和换行符之类的空格字符“很有趣”,那么您在[C0 ]旨在使不耐烦的人跳起来:scanf
does读取空白字符。
如果您想让%c
跳过空白字符,以便scanf
会读取下一个非空白或“有趣的”字符,只需在%c
之前的格式字符串中包含空格字符即可。
%c