請用C++寫一個小程序,從一個文本文件中把所有數字累加起來,然後顯示出結果。文本文件內容如下所示:
華倫巴菲特-世界首富的選股法則:
1. 股東權益報酬率(1季及2年平均)均大於3.75%
2. 現金流量成長率(1季及2年平均)均大於5%
3. 價格/淨值比小於2
4. 毛利率(1季及2年平均)均大於15%
5. 本益比小於20
結果=1+2+3+75+1+2+5+2+1+2+15+20
题目还有一个要求,要忽略标题,这里忽略的方法是只截取“.”之后的数字。
用时 30 分钟,感觉手有点生了。
Code
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE *file = fopen("d:\\xx.txt", "r");
if (file == NULL)
{
printf("file open fail.");
return 0;
}
// 缓冲区
char buf[20];
int index = 0;
// 是否跳过标题
bool step = false;
// 最后的总数
int sum = 0;
char c;
while( (c= fgetc(file))!=EOF)
{
if (c == '\n')
step = false;
if (c == '.')
step = true;
if ((c >= '0' && c <='9') && step)
{
buf[index] = c;
index++;
}
else
{
if (index > 0)
{
int n = 0;
for(int i = 0; i < index; i++)
{
n = n * 10;
n += (buf[i] - '0');
}
printf("%d + ", n);
sum += n;
index = 0;
}
}
}
printf("\nsum:%d \n", sum);
return 0;
}