读书人

scanf为什么执行慢解决方法

发布时间: 2012-04-01 17:23:46 作者: rapoo

scanf为什么执行慢
下面函数从文件中读取数字,使用scanf("",&num)完全可以,为什么使用下面的读取提高了程序执行速度

C/C++ code
inline void read(int &num){    char in;    in =getchar();    while(in <'0'|| in > '9')        in =getchar();    num = in -'0';    while(in =getchar(),in >='0'&&in <='9')        num *=10,num +=in -'0';}


[解决办法]
不知所云
[解决办法]
scanf是可以读取所有类型的值的,而getchar是一个宏,且只能读取int类型的,当然快很多拉,有能力的话,自己去看看scanf的定义,或者看看相应的汇编代码
[解决办法]
scanf参数是可变长的,需要解析格式后输出,因此肯定比较慢。而getchar()只是每次一个字符的I/O,因此比较快。
[解决办法]
你这个能输入两位数吗?

[解决办法]
功能不同,不具有可比性
[解决办法]
参考getchar和scanf的源代码:
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\*.c

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express
右边Visual C++ 2010 Express下面的Select language...下拉选‘简体中文’,再按Install Now按钮

读书人网 >C语言

热点推荐