各行に1単語ずつ書かれているファイルwordをコマンドラインから指定し、整数値nを入力すると指定したファイルのn行目の単語を表示し、これを標準入力が終わるまで(Ctrl+Dを入力するまで)繰り返すプログラムを書きたいです。”標準入力が終わるまで繰り返す”にはどのように書いたらよいですか?
C言語
#include <stdio.h> #include <stdlib.h> typedef struct { unsigned char s[24]; } word; int main(int argc, char **argv) { int i,c,k,x; scanf("%d", &x); word dict[20000]; FILE *fp; if (argc < 2) { fprintf(stderr,"usage: ./a.out dictFile\n"); exit(1); } if ((fp=fopen(argv[1],"r")) == NULL) { fprintf(stderr,"cannot open file %s\n",argv[1]); exit(1); } while(scanf("d", &x) != EOF) { i=0; k=0; while((c=fgetc(fp)) != EOF) { if (c == '\n') { dict[i].s[k] = 0; i++; k=0; } else { dict[i].s[k] = c; k++; } } } fclose(fp); printf("s\n", dict[x-1].s); return 0; }
まだ回答がついていません
会員登録して回答してみよう