• 締切済み

どうしてもわかりません2

#include <stdio.h> #include <string.h> #define MAX_LINE_SIZE 1024 #define NN 1000000 main(int argc, char* argv[]) { char fname[256]; char buf[MAX_LINE_SIZE]; int i; FILE *fp; for(i=1; i<argc; i++) { bzero(fname, 256); strcpy(fname, argv[i]); if( !(fp = fopen(fname, "r"))) { printf("File Open Error.\n"); exit(1); } while( fgets(buf, MAX_LINE_SIZE, fp ) ) { printf("%s", buf); } fclose(fp); } } このプログラムをコンパイルして(実行形式はa.out)コマンドラインから 以下のようなデータのテキストファイルna.txtを実行しました。./a.out na.txtするとこのソースだとbufに一行目がすべて文字列として入ってしまうと思います。そうではなく、1行目の数字ひとつずつを取り出す方法が知りたいです。たしか数字とか空白とかを判定する関数があったともうのですが、どうしてもわかりません。 ちなみにこの問いかけからこの問いがきています。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1577294 1 2 3 4 5 6 2 3 4 5

みんなの回答

noname#30727
noname#30727
回答No.1

前の質問でscanfを使うなどのヒントが出ているのに、なぜ自分で試してみようとしないのですか? scanfの動作がわかるサンプルを作ってみましたが、その他については >そんなことはわかってます。 という事なので省略します。 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *fp; int c, n; if ((fp = fopen(argv[1], "r")) == NULL) { printf("File Open Error.\n"); exit(1); } c = fscanf(fp, "%d", &n); if (c) { printf("取得した数値 = %d\n", n); } else { printf("取得できなかった\n"); } fclose(fp); return 0; }