【原创】C语言处理文件数据(2)

来源:互联网 发布:物联网人才需求数据 编辑:程序博客网 时间:2024/05/16 09:06

 

【原创】C语言处理文件数据(2)

 

今天又帮同学处理了数据,再做个记录。

数据文件总共800行,部分原数据格式:

13 289:1 88:3 107:1 50:2 199:1 68:2 64:1 95:6 244:1 118:1 122:2 256:1 228:1 11 289:2 88:1 50:1 193:1 256:1 20:2 24:1 228:1 140:2 169:1 93:3 15 289:1 107:1 157:1 64:1 204:1 244:1 231:5 183:1 101:1 118:1 122:1 256:1 228:1 7 158:1 68:3 234:2 86:1 144:2 20:1 228:1 5 289:1 234:1 102:1 20:1 228:1 2 68:1 234:1 6 289:2 64:1 293:1 256:1 20:2 228:1 10 197:2 147:1 289:1 107:2 21:1 213:1 118:1 20:1 228:1 191:1 15 289:2 88:2 68:1 64:1 95:1 204:1 231:3 277:1 59:1 267:1 256:1 20:2 24:1 228:1 93:2 

要求:将每行数据行首的数字全部相加,得到他们的总和,然后输出。按照上面的数据即输出:sum = 84.

示例代码:

/*************************************************************************> File Name: datasum.c> Author: Geng> Mail: genglut@163.com> Created Time: Sat 01 Nov 2014 08:16:46 PM CST ************************************************************************/#include<stdio.h>#include<stdlib.h>int main(void){FILE *filesrc, *filedest;char ch;//接收从源文件读到的字符char a[3] = {'\0'};//用来存储每行开始的数据,因为最多是两位数,所以定义3个元素就够用。int temp;//临时存储字符转换后的数据long sum = 0;//存储每行开始数字的总和if((filesrc = fopen("data.txt", "r")) == NULL)//打开文件{perror("fopen");exit(EXIT_FAILURE);}while(!feof(filesrc))//判断是否读到文件末尾{ch = fgetc(filesrc);//读每行的第一个字符,肯定是数字字符a[0] = ch;//将第一个字符存储到a【0】中ch = fgetc(filesrc);//读每行的第二个字符,可能是数字字符,也可能是空格if(ch == ' ')//当是空格时,什么都不做{;}else//当第二个字符是数字时,存储到a【1】中{a[1] = ch;}temp = atoi(a);//利用atoi函数将字符转换为数字sum = sum + temp;//求和while ((ch = fgetc(filesrc)) != '\n')//判断是否读到了行末尾{if(ch == EOF)//非常关键的一行代码!!!判断行的末尾字符是不是文件结束符EOF,如果没有这步判断,则无法跳出循环,即进入死循环。break;//如果是EOF,则跳出while循环continue;//如果不是EOF,则继续读下一个字符}a[0] = '\0';//这两行作用是,将字符数组a清空,否则可能会把上一行的行首数据加到下一行,导致sum出错。a[1] = '\0';}printf("sum = %ld\n", sum);//打印出所有行首数据的总和return 0;}

 

原文链接:http://blog.csdn.net/geng823/article/details/40687289

0 0
原创粉丝点击