标题:混合字符和数值输入
只看楼主
破碎的石头
Rank: 2
等 级:论坛游民
帖 子:71
专家分:13
注 册:2012-12-11
得分:0 
回复 6楼 wp231957
我理解了。谢谢吧主啊。其实理解了我也认为好像真没什么用
2012-12-11 22:31
破碎的石头
Rank: 2
等 级:论坛游民
帖 子:71
专家分:13
注 册:2012-12-11
得分:0 
回复 10楼 TonyDeng
char..
2012-12-11 22:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
那个循环是有用的!

授人以渔,不授人以鱼。
2012-12-11 22:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
以下是引用破碎的石头在2012-12-11 22:32:38的发言:

char..

看都没看就乱说,返回类型是int!

授人以渔,不授人以鱼。
2012-12-11 22:33
破碎的石头
Rank: 2
等 级:论坛游民
帖 子:71
专家分:13
注 册:2012-12-11
得分:0 
回复 14楼 TonyDeng
真的吗?char get_first(void)?
2012-12-11 22:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 

授人以渔,不授人以鱼。
2012-12-11 22:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 

授人以渔,不授人以鱼。
2012-12-11 22:38
破碎的石头
Rank: 2
等 级:论坛游民
帖 子:71
专家分:13
注 册:2012-12-11
得分:0 
回复 16楼 TonyDeng
这样就可以说明了前面为什么用int了,也就是说getchar()读取的字符都是以整数型保存的吗?
2012-12-11 22:39
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
得分:4 
许多初学者都习惯用 char 型变量接收 getchar、getc,fgetc 等函数的返回值,其实这么做是不对的,并且隐含着足以致命的错误。

getchar 等函数的返回值类型都是 int 型,当这些函数读取出错或者读完文件后,会返回 EOF。EOF 是一个宏,标准规定它的值必须是一个 int 型的负数常量。通常编译器都会把 EOF 定义为 -1。

问题就出在这里,使用 char 型变量接收 getchar 等函数的返回值会导致对 EOF 的辨认出错,或者错把好的数据误认为是 EOF,或者把 EOF 误认为是好的数据。

while(getchar()!='\n')
continue;
这里就清完了缓冲区的所有字符,因为getchar()最后返回的是'\n'(换行符)

I have not failed completely
2012-12-11 22:40
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
得分:0 
不过说法好像不一,我记得有些地方确实把getchar()的返回值说成char

I have not failed completely
2012-12-11 22:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-390748-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.712496 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved