当前位置: 代码迷 >> C语言 >> 本人发现c语言中关于scanf()函数一个怪异的问题?
  详细解决方案

本人发现c语言中关于scanf()函数一个怪异的问题?

热度:233   发布时间:2005-05-24 11:13:00.0
本人发现c语言中关于scanf()函数一个怪异的问题?

#include <stdio.h> int main() { char s[20]; char temp; printf("input the temp \n"); printf("q or t? "); scanf("%c",&temp); while(1) { printf("input the s\n"); scanf("%s",s); printf("%s\n",s);

printf("q or t? "); scanf("%c",&temp); if(temp == 'q') break; } return 0; } 低二条scanf("%c",&temp);语句总是的不到执行,怎么回事啊,可是如果换成c++下的cin就好了

搜索更多相关的解决方案: c语言  scanf  函数  怪异  

----------------解决方案--------------------------------------------------------
哎呀,有点难度
----------------解决方案--------------------------------------------------------

#include <stdio.h> int main() { char s[20]; char temp; printf("input the temp \n"); printf("q or t? "); scanf("%c",&temp); while(1) { printf("input the s\n"); scanf("%s",s); printf("%s\n",s); getchar();/*加上这句*/

printf("q or t? "); scanf("%c",&temp); if(temp == 'q') break; } return 0; } ==================================== 另外,程序有待改进


----------------解决方案--------------------------------------------------------
错了,执行了,但因为你的键盘缓冲区里有东西,所以他直接就读他了,而不在等你输入!

在想要让计算机等待你敲键盘的地方之前清一下键盘缓冲区就可以了:fflush(stdin);(知道加哪吧?)!
----------------解决方案--------------------------------------------------------
Antigloss 我想知道getchar();/*加上这句*/在这里的作用?
----------------解决方案--------------------------------------------------------
天使预备役 请问清一下键盘缓冲区就可以了:fflush(stdin); 在什么头文件里?
----------------解决方案--------------------------------------------------------
应该是了,就在stdio.h头文件中!
----------------解决方案--------------------------------------------------------
我看了好久才看懂,,,哎~~~!!!
----------------解决方案--------------------------------------------------------
看不懂!不晓的写的些什么、


----------------解决方案--------------------------------------------------------
scanf("%c",&temp); file://第一次输入一个数据的时候其实是两个字符存入缓冲区了 比如你输入"q"然后回车,那么字符q和回车就留大缓冲区 解决的办法是加一个变量char ch; 然后在第一次scanf("%c",&temp);后面加一句ch=getchar();问题就解决了
----------------解决方案--------------------------------------------------------
  相关解决方案