|
以下のようにすればできると思います。
ただ、無用にステップ数を食っています。
他に、良い方法があるかもしれません。
#include <stdio.h>
#include <strings.h>
main()
{
FILE *rfp,*wfp ;
char buff[1024] ;
char *pr ;
char str[1024],w_str[1024] ;
int num,w_num ;
rfp = fopen("text.txt","r") ;
wfp = fopen("kekka.txt","w") ;
/*1レコード目の読み込み。バッファに格納 */
if (fgets(buff,1024,rfp)==NULL) {
fclose(rfp) ;
fclose(wfp) ;
return 0 ;
} else {
buff[strlen(buff)] = '\0' ;
pr = strtok(buff, ",") ;
strcpy(str,pr) ;
pr = strtok(NULL, ",") ;
num = atoi(pr) ;
}
/*2レコード目以降読み込み */
while(fgets(buff,1024,rfp)!=NULL) {
buff[strlen(buff)] = '\0' ;
pr = strtok(buff, ",") ;
strcpy(w_str,pr) ;
pr = strtok(NULL, ",") ;
w_num = atoi(pr) ;
if (strcmp(str,w_str) == 0) {
num = num + w_num ;
} else {
fprintf(wfp,"%s,%d\n",str,num) ;
strcpy(str,w_str) ;
num = w_num ;
}
}
/* 最後のデータを出力 */
fprintf(wfp,"%s,%d\n",str,num) ;
}
|