• 締切済み

C言語でファイルの内容を strtok関数 を使って数字と文字を分けて

C言語でファイルの内容を strtok関数 を使って数字と文字を分けて配列に格納したいのですが、うまくできません。 どこが駄目なのかご指摘をお願いします! ファイル内容 20 田中 10 鈴木 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc,char *argv[]) { FILE *fp; char str[256]; char *tp; int i=0; int num[10]; char na[10]; fp=fopen(argv[1],"r"); while(fgets(str,sizeof str,fp)!=NULL); tp = strtok ( str, " " ); while(tp != NULL ) { num[i]=atoi(tp); tp = strtok( NULL," "); if ( tp != NULL ){ na[i]=*tp; } i++; } printf("%d\n%s",num[0],na[0]); printf("%d\n%s",num[1],na[1]); fclose(fp); return 0; }

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

>while(fgets(str,sizeof str,fp)!=NULL); これは、ファイルの終わりに到達するまで 何もしないで読み続けるだけである、 という意味を持っていることは理解できていますか?

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.2

宣言と、代入が駄目そうな気が・・・ >char na[10]; >na[i]=*tp; を char na[10][16]; strcpy(na[i],tp); とか変更してみては?

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

ザッと見ただけですが… >fp=fopen(argv[1],"r"); ファイルのオープンに失敗しても強引に突き進むのは問題ありです。 >while(fgets(str,sizeof str,fp)!=NULL); 最後のセミコロンの意味を教えてください。

hiro419
質問者

補足

ファイルについては了解しました! while(fgets(str,sizeof str,fp)!=NULL); は、空文のつもりで書きました。

関連するQ&A