| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 840 人关注过本帖
标题:本人发现c语言中关于scanf()函数一个怪异的问题?
收藏  订阅  推荐  打印 
hengshan
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2005-4-15
本人发现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  函数  怪异  
2005-5-24 11:13
钢燃
Rank: 2
等级:注册会员
帖子:80
积分:900
注册:2005-5-19

哎呀,有点难度

寻找同济的朋友的网络连接
2005-5-24 11:47
Antigloss
Rank: 2
等级:注册会员
帖子:109
积分:1290
注册:2004-12-30

#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; } ==================================== 另外,程序有待改进


蚂蚁的 C/C++ 标准编程:http://cpp.ga-la.com http://cprog.x168.com http://free3.e-168.cn/antigloss/ 欢迎惠临~ C/C++ 的电子书~源代码~教程~帮助~您都可以从这里获得~
2005-5-24 11:56
天使预备役
Rank: 4
等级:高级会员
威望:3
帖子:669
积分:6804
注册:2004-4-6

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

在想要让计算机等待你敲键盘的地方之前清一下键盘缓冲区就可以了:fflush(stdin);(知道加哪吧?)!

我 :“日本人也算人?” 上帝:“算,算,算吧。”。 我 :“这不是你的真心话。” 我 :“失手造批禽兽出来也就算了,但也不能把它们紧挨着咱中国人放啊!” 上帝:“你们中国人自己死好面子讲什么仁义,早点踏平过去,不早没事了。” 我 :。。。
2005-5-24 11:56
钢燃
Rank: 2
等级:注册会员
帖子:80
积分:900
注册:2005-5-19

Antigloss 我想知道getchar();/*加上这句*/在这里的作用?

寻找同济的朋友的网络连接
2005-5-24 12:12
钢燃
Rank: 2
等级:注册会员
帖子:80
积分:900
注册:2005-5-19

天使预备役 请问清一下键盘缓冲区就可以了:fflush(stdin); 在什么头文件里?

寻找同济的朋友的网络连接
2005-5-24 12:14
天使预备役
Rank: 4
等级:高级会员
威望:3
帖子:669
积分:6804
注册:2004-4-6

应该是了,就在stdio.h头文件中!

我 :“日本人也算人?” 上帝:“算,算,算吧。”。 我 :“这不是你的真心话。” 我 :“失手造批禽兽出来也就算了,但也不能把它们紧挨着咱中国人放啊!” 上帝:“你们中国人自己死好面子讲什么仁义,早点踏平过去,不早没事了。” 我 :。。。
2005-5-24 13:23
小悟空
Rank: 3Rank: 3
等级:中级会员
帖子:218
积分:2280
注册:2005-5-14

我看了好久才看懂,,,哎~~~!!!

2005-5-24 20:38
lovec
Rank: 1
等级:新手上路
帖子:3
积分:130
注册:2005-5-22

看不懂!不晓的写的些什么、

2005-5-24 23:43
cosixu
Rank: 2
等级:注册会员
帖子:66
积分:764
注册:2004-10-11

scanf("%c",&temp); file://第一次输入一个数据的时候其实是两个字符存入缓冲区了 比如你输入"q"然后回车,那么字符q和回车就留大缓冲区 解决的办法是加一个变量char ch; 然后在第一次scanf("%c",&temp);后面加一句ch=getchar();问题就解决了
2005-5-25 05:10
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.065367 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved