• ベストアンサー

テキストファイルを読み込むには・・・。

テキストファイルの中身が以下のように abcd,efg,hij,klmn↓ opqr,stu,vwx,yzab↓ cdef,ghi,jkl,mnop↓ .         .          .         .         のように何行あるか分からない状態で1行ずつ,と\0で区切って4つの文字列を取り出したい(上のテキストファイルの1行目だと[abcd][efg][hij][klmn]のように)のですがどのようにすればいいのでしょう?できれば余分なメモリを確保するやり方を避けたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#include <stdio.h> #include <string.h> #define MAXLINE 64 void main(void){ char line[MAXLINE]; char *split[4]; FILE *fp; fp=fopen("data.txt","r"); while(NULL!=fgets(line,MAXLINE,fp)){ char *p=line; int i=0; while(NULL!=(p=strtok(p,",\n"))){ split[i++]=p; p=NULL; } printf("1:%s,2:%s,3:%s,4:%s\n",split[0],split[1],split[2],split[3]); } fclose(fp); }

takky19
質問者

お礼

ありがとうございました。うまくできました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

char line[MAXLINE]; char a[MAXWORD],b[MAXWORD],c[MAXWORD],d[MAXWORD]; として、 while(fgets(line,MAXLINE,fp)){  sscanf(line,"%[^,],%[^,],%[^,],%[^,]",a,b,c,d);  a,b,c,dに対する処理 }

takky19
質問者

お礼

ありがとうございました。うまく分けることができました。