scanf("%d %c %c",&a, &b , &c);输入语句中加的有空格。如果不加空格写成
scanf("%d%c%c",&a, &b, &c);而用键盘输入“3空e空f”时会出错的。
3空e空f 那么我在输入3后它怎么知道我整数输入结束了,我输入一个空格不是告诉系统我数字输入结束了,接下来就输入字符类型。就像scanf("%d%d",&a, &b);一样在输入下一个整数时,
%d%d之间是没有空格的。字符之间输入时要用空格隔开我知道。这样表示:scanf("%d%c %c",&a,&b,&c);,这样输入3空e空f ,不是把3给了a,e给了b, f给了c可是还是不对???
3空e空f 那么我在输入3后它怎么知道我整数输入结束了
因为遇到了不可转换为数字的字符 超出了'48-57'
我输入一个空格不是告诉系统我数字输入结束了
是的 但要知道此时这个空格还在缓存区内
表示再后面就不知道你说什么了
空格还在缓存区内对数字有什么影响?
我后面的意思是: 用scanf("%d%c %c",&a,&b,&c);如果还是输入 3空e空f 则把3给了a,空格给了b, e给了c, 我用空格告诉系统数字结束了,下一个字符e是给b的,则输出结果不正确。 可是为什么用scanf("%d %c %c",&a,&b,&c); 把中间的%c前加了一个空格,输出结果正确。这是为什么呢?
空格还在缓存区内对数字有什么影响?
表示数字部分已经完毕 对后面的字符部分有影响
我后面的意思是: 用scanf("%d%c %c",&a,&b,&c);如果还是输入 3空e空f
则把3给了a,空格给了b, e给了c,
是的
我用空格告诉系统数字结束了,下一个字符e是给b的,则输出结果不正确。 可是为什么用scanf("%d %c %c",&a,&b,&c); 把中间的%c前加了一个空格,输出结果正确。这是为什么呢?
这个想回答你要用一个例子
scanf("%d,%c,%c", &a,&b,&c);如果你是加逗号的 那你是不是输入时也要加个逗号呢?
一样的道理啊 其实对于这个问题你也大可以不必深究 把学习重点用在其它地方吧 如果还是不能理解 知道它这个地方要注意就行了 不会影响后面的学习 等以后感觉自己知识面够了再回头看这个问题 你会发现他很简单
我知道在用键盘输入的时候要加空格,我的意思是为什么不能写为scanf("%d%c%c",&a,&b,&c);这种形式!
追答可以,你输入的时候要回车再输入ok?
追问不ok啊!
这段代码你试试:
#include
int main()
{
int a;
char b, c;
scanf("%d%c%c",&a,&b,&c);
printf("a = %d, b = %c, c = %c", a, b, c);
system("pause");
return 0;
}
#include
int main()
{
int a;
char b, c;
scanf("%d%c%c",&a,&b,&c);
printf("a = %d, b = %c, c = %c", a, b, c);
getchar();
return 0;
}