|
ファイルからレコードを読み込み、Noが同じもの同士のsize
の値を足し算し、その和を求めています。
一応、動くものはできたのですが、スマートというか見栄えの良いも
のではないです。
少し、良くしたいのです。
お願いします。
#include <stdio.h>
#include <string.h>
main()
{
FILE *fp;
char buff[256] ;
char read_data[3][64];
char *p;
char no[6];
char name[64];
char s_size[9];
char dummy_no[6];
char dummy_name[64];
long size;
int i;
fp = fopen("file.txt","r");
if (fp == NULL) {
printf("file open error\n") ;
exit(1) ;
}
memset(dummy_no,'\0',sizeof dummy_no) ;
memset(dummy_name,'\0',sizeof dummy_name) ;
while(fgets(buff,sizeof buff,fp)) {
i = 0;
p=strtok(buff,",");
strcpy(no,p);
p=strtok(NULL,",");
strcpy(name,p);
p=strtok(NULL,",");
strcpy(s_size,p);
if (strcmp(dummy_no,no) == 0) {
size = size + atol(s_size) ;
} else {
if (dummy_no[0] != '\0') {
printf("No[%s] Name[%s] size[%ld]\n",dummy_no,dummy_name,size);
size = 0;
}
size = atoi(s_size);
strcpy(dummy_name,name);
strcpy(dummy_no,no);
}
memset(read_data,'\0',sizeof read_data) ;
}
printf("No[%s] Name[%s] size[%ld]\n",dummy_no,dummy_name,size);
fclose(fp);
}
読み込むファイルは、以下の様にすでにソート済みです。
ファイルのフォーマットは、左から順に、No、Name、Sizeです。
000001,yamada.taro,100
000001,yamada.taro,100
000001,yamada.taro,100
000001,yamada.taro,100
000001,yamada.taro,100
000002,satou.jiro,1000
000003,yamamoto.koutaro,123
000003,yamamoto.koutaro,100
000003,yamamoto.koutaro,10
000004,ito.hanako,250
|