• 締切済み

改行されたtxtファイルの読み込み(C++)

3374356,4785323,7043817,5111179,8267572, 6486903,3258714,6344689,8620512,7434933, 8088837,8231528,6524254,5928445,7101798, 5338215,5233711,4753647,5930266,7512232, 5343749,5813061,6439450,6257874,5724787, 5864114,9006652,4871427,6158077,7343041, 7615426,7168142,5866379,8154664,7342803, という形式のデータ数1000のtxtファイルがあります。 解析に使用したいのでCに読み込みたいのですが、方法が調べても分からず困っています。とりあえず以下が、データが一行の際に使用しているソースコードです。 FILE *fp; char linebuf[4096]; char *p; int array[1024]; int data=0; fp=fopen("randombetarev.txt","r"); if(!fp) return 1; fgets(linebuf,4096,fp); fclose(fp); p=strtok(linebuf,","); do{ array[data]=atoi(p); data++; }while(p=strtok(NULL,","));//ここまででデータを配列に格納 これでは改行の判別ができないので初めの一行目のデータしか読み込めません。どなたかご教授ください。

みんなの回答

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

改行を見る必要があるのでしょうか? 改行に関係なく、とにかく1000個のデータを読みたいということであれば、fscanfの方が向いていると思います。 int v; while(fscanf(fp," %d ,",&v)==1){ array[data]=v; data++; }

回答No.1

fgetsは1行しか読み込まないのでファイルを全て読み込む為には ファイルの最後までfgetsを繰り返し行う必要があります。 while(fgets(linebuf, 4096, fp)){ p = strtok(linebuf, ",\n"); do{ array[data]=atoi(p); data++; }while(p=strtok(NULL,",\n")); } fclose(fp);

関連するQ&A

専門家に質問してみよう