各行に1単語ずつ書かれているファイルwordをコマンドラインから指定し、整数値nを入力すると指定したファイルのn行目の単語を表示し、これを標準入力が終わるまで(Ctrl+Dを入力するまで)繰り返すプログラムを書きたいです。”標準入力が終わるまで繰り返す”にはどのように書いたらよいですか?
C言語
1#include <stdio.h> 2#include <stdlib.h> 3typedef struct { 4 unsigned char s[24]; 5} word; 6int main(int argc, char **argv) { 7 int i,c,k,x; 8 scanf("%d", &x); 9 word dict[20000]; 10 FILE *fp; 11 12 if (argc < 2) { 13 fprintf(stderr,"usage: ./a.out dictFile\n"); exit(1); 14 } 15 if ((fp=fopen(argv[1],"r")) == NULL) { 16 fprintf(stderr,"cannot open file %s\n",argv[1]); exit(1); 17 } 18 while(scanf("d", &x) != EOF) { 19 i=0; k=0; 20 while((c=fgetc(fp)) != EOF) { 21 if (c == '\n') { 22 dict[i].s[k] = 0; 23 i++; 24 k=0; 25 } else { 26 dict[i].s[k] = c; 27 k++; 28 } 29 } 30 } 31 fclose(fp); 32 printf("s\n", dict[x-1].s); 33 return 0; 34}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。