UNIX/Linuxの部屋 関数:fgets

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




関数 fgets ファイルから1行読み込む このエントリーをはてなブックマークに追加

標準入力から1行取得したければ、
#include <stdio.h>
char buf[256];
fgets(buf,sizeof(buf),stdin);
とする。指定のファイルを読み込み、先頭に行番号を付けるには
#include <stdio.h>
char buf[256];
FILE *fp;
fp = fopen("sample.txt","r");
if ( fp == NULL ){
ファイルオープンエラー
}
while (1){
if ( fgets(buf,sizeof(buf),stdin) == 0 ){
break; // 全部読み込んだ
}
printf("%s",buf);
}
fclose(fp);
バッファの最後には改行コードが付いている。ただし、この例では、sample.txt に 255文字を越える行があればうまく動作しないことに注意。

gets を使ってはいけない。gets(buf) という呼び出し形式のため、領域の長さを指定できないため、長い行を読み込もうとするとバッファオーバーランが発生するからである。かわりに、必ず fgets(buf,sizeof(buf),stdin) としよう。