cpl_p61中的例题出现奇怪的现象
时间:2009-04-10 来源:hubo214
cpl的P61中的例题源码如下:
#include <stdio.h>
#define MAXLINE 100
main()
{
double sum, atof(char []);
char line[MAXLINE];
int getline(char line[], int max);
sum = 0;
while (getline(line,MAXLINE) > 0)
printf("\tsum = %g\n", sum += atof(line));
return 0;
}
double atof(char s[])
{
double val, power;
int i, sign;
for (i = 0; isspace(s[i]); i++)
;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] =='-')
i++;
for (val=0; isdigit(s[i]); i++)
val = 10.0 * val + (s[i] - '0');
if (s[i] == '.')
i++;
for (power=1.0; isdigit(s[i]); i++) {
val = 10.0 * val + (s[i] - '0');
power = power * 10.0;
}
return sign * val / power;
}
int getline(char s[], int limit)
{
int i, c;
i = 0;
while ( --limit >0 && (c=getchar()) != EOF && c != '\n')
s[i++] = c;
if ( c = '\n' )
s[i++] = '\n';
s[i] = '\0';
return i;
}
编译命令及结果:
hubo@hubo:~/cpl/cap4$ gcc -g -o test 4_2.c
hubo@hubo:~/cpl/cap4$ ./test < 4_2.c > 3
文本文件shu.c及文本文件见上传文件。由于文本文件3太大,共570807行,其中除了第一行,第二行和最后一行外,其他所有的行内容都是一样的。对其内容进行截短,内容为:(中间的省略号代表共有570803行)
sum = 111.023
sum = 110.234
sum = 10.775
..........
..........
sum = 10.
shu.c 仅三行,内容如下:
+111.023
-0.789
-99.459
重定向后的文本文件3 居然有7.6M,
#include <stdio.h>
#define MAXLINE 100
main()
{
double sum, atof(char []);
char line[MAXLINE];
int getline(char line[], int max);
sum = 0;
while (getline(line,MAXLINE) > 0)
printf("\tsum = %g\n", sum += atof(line));
return 0;
}
double atof(char s[])
{
double val, power;
int i, sign;
for (i = 0; isspace(s[i]); i++)
;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] =='-')
i++;
for (val=0; isdigit(s[i]); i++)
val = 10.0 * val + (s[i] - '0');
if (s[i] == '.')
i++;
for (power=1.0; isdigit(s[i]); i++) {
val = 10.0 * val + (s[i] - '0');
power = power * 10.0;
}
return sign * val / power;
}
int getline(char s[], int limit)
{
int i, c;
i = 0;
while ( --limit >0 && (c=getchar()) != EOF && c != '\n')
s[i++] = c;
if ( c = '\n' )
s[i++] = '\n';
s[i] = '\0';
return i;
}
编译命令及结果:
hubo@hubo:~/cpl/cap4$ gcc -g -o test 4_2.c
hubo@hubo:~/cpl/cap4$ ./test < 4_2.c > 3
文本文件shu.c及文本文件见上传文件。由于文本文件3太大,共570807行,其中除了第一行,第二行和最后一行外,其他所有的行内容都是一样的。对其内容进行截短,内容为:(中间的省略号代表共有570803行)
sum = 111.023
sum = 110.234
sum = 10.775
..........
..........
sum = 10.
shu.c 仅三行,内容如下:
+111.023
-0.789
-99.459
重定向后的文本文件3 居然有7.6M,
相关阅读 更多 +