BUF_SIZE文字以上ある行を読み込もうとした場合に、 BUF_SIZE文字目以上を表示せずに、 再び次の行頭から画面表示するようにする。
例えば、BUF_SIZEを5に設定して、 次のファイルのように、以下のようなテキストファイル
88888888
333
7777777
1
4444
9999999
666666
55555
22
を入力したとき次のように表示することになる。
8888
333
7777
1
4444
9999
6666
5555
22
以下のコードを改定すればいいのですが、どのようにすればいいのでしょうか。至急、ご教授ください。
#include<stdio.h> #include<stdlib.h> #include<string.h> #define BUF_SIZE 5 int main(void){ FILE *fp; const char *filename="kll.txt"; char buf[BUF_SIZE]; char *ch; int line=1; char *check_whole_line; fp=fopen(filename, "r"); if(fp==NULL){ printf("Can't Open File %s\n", filename); exit(1); } while(1){ ch=fgets(buf, BUF_SIZE, fp); if(ch==NULL){ break; } check_whole_line=strchr(buf, '\n'); if(check_whole_line==NULL){ printf("%d行目:1行読み込めていません。\n", line); exit(1); } else{ printf("%s", buf); line++; } } fclose(fp); return 0; }
何を試してどうなった状況でしょうか?
> どのようにすればいいのでしょうか。至急、ご教授ください。
一つ目。「至急」なんて言葉を使うな。
至急ってことは、『急いで答え寄こせやゴルァ』ってことをやんわりと言っているだけです。
つか、本来は自分でやるべきことです。
それを他人がやるのが当たり前なのでしょうか。
回答者は仕事として回答しているわけではありませんし、質問者さんの奴隷でもありません。
他人を見下した言い方です。
二つ目。「どのようになるのか、どうなればいいのか」ぐらいは書こう。
後者は書かれているようですが、前者(どのようになるのか)が書かれていません。
もしかしたら環境によるものかもしれません。ファイルがないとか、OSの設定によるものだとか。
それなのにコードだけ出されてもね……。
三つ目。プログラミングは「こう書けばいい」というものではない。
プログラミングは決まった形にするのではなく、『ロジック』を書くのです。
四つ目。デバッグせよ。
プログラミングは「書いて終わり」ではありません。
デバッグという処理も含みます。つか当然の技術です。
「椅子を作りましたが、高さが合いません。誰か修繕してください」とDIYが趣味と言う人が言いますかね?
五つ目。自分でやるべき。
課題なりタスクなりは自分でやるのが当たり前です。
とりあえず、『自分なりにやったこととその結果』とかのようにほんの少しでも工夫すればだいぶ印象が変わるのでやってみてください。
あなたの回答
tips
プレビュー