免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3476 | 回复: 17
打印 上一主题 下一主题

新手提问:怎么用gets()只取Int值? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-05 12:04 |只看该作者 |倒序浏览
在CU上潜水有一段时间了,看到好多人都说最好不用scanf,那现在要输入一个Int值,该怎么做呢?

论坛徽章:
0
2 [报告]
发表于 2005-08-05 12:15 |只看该作者

新手提问:怎么用gets()只取Int值?

老兄,你不会想要先读入一个由整数值组成的字符串,然后在将字符串转换成整数值吧.
能告诉我为什么最好不用scanf吗?

论坛徽章:
0
3 [报告]
发表于 2005-08-05 14:23 |只看该作者

新手提问:怎么用gets()只取Int值?

[quote]原帖由 "unixbiginner"]在CU上潜水有一段时间了,看到好多人都说最好不用scanf,那现在要输入一个Int值,该怎么做呢?[/quote 发表:


没听说过这种说法。gets()倒是的确要少用,应该使用fgets()替代。

论坛徽章:
0
4 [报告]
发表于 2005-08-08 21:58 |只看该作者

新手提问:怎么用gets()只取Int值?

请问用哪个函数能实现字符串和整数的互换,在tubor c环境下

论坛徽章:
0
5 [报告]
发表于 2005-08-08 22:09 |只看该作者

新手提问:怎么用gets()只取Int值?

atoi, atol

论坛徽章:
0
6 [报告]
发表于 2005-08-09 10:42 |只看该作者

新手提问:怎么用gets()只取Int值?

看到好多人都说最好不用scanf


不管你要什么值,最初都是char,都经过转化,scanf根据运行时的那个参数,决定对得到的 char串怎么处理。

论坛徽章:
0
7 [报告]
发表于 2005-08-09 11:23 |只看该作者

新手提问:怎么用gets()只取Int值?

getch

论坛徽章:
0
8 [报告]
发表于 2005-08-09 12:21 |只看该作者

新手提问:怎么用gets()只取Int值?

可以用C语言简单实现atoi()函数的功能的
int a[10];
int b;

gets(a);

b=0;

while(*a++!=NULL)
b=10*b+*a-'0';

大概好象是这样的
这个叫什么 扼多拉筛选 法
我不保证上面我写的代码正确性,但思想和那一致的

至于不用scanf的理由是他对数据格式化的处理不严格,往往由于你没有太关心你的格式导致了,想不到的错误

例如
main(){
int b;

while(1)
{
printf("*";
scanf("%d",b);
}
}

这个大家都很清楚会有怎么样的结果,然而你如果在做输入结果的时候输入的不是1-9字符而是字母字符的话,结果就大出意料了,而看这结果解释为什么也不是很容易的,必须熟悉scanf()函数的源代码因为真正错的地方可能是在硬件中断时候对于缓冲区处理问题(有没有清空还是忽略的 --知识猜测);;
所以很多人都捧cin 比scanf多好多好的

论坛徽章:
0
9 [报告]
发表于 2005-08-09 12:22 |只看该作者

新手提问:怎么用gets()只取Int值?

打错了  第一个应该是
char a[10];

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2005-08-09 12:29 |只看该作者

新手提问:怎么用gets()只取Int值?

原帖由 "renxiaolin_jsj" 发表:
main(){
int b;

while(1)
{
printf("*";
scanf("%d",b);
}
}



如果你编译的时候 开启警告的话.就会发现有那样的问题.
不至于向你说的 什么,.........

而且你说的
>;>;地方可能是在硬件中断时候对于缓冲区处理问题

这都是早期的操作系统吧? 不支持虚拟内存的情况. 现在你想指恐怕你都指不到. 如果你能的话告诉我方法.我也学学.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP