C言語のfgets

#include <stdio.h>

char * fgets( char *row , int len , FILE *fp );

■戻り値:
ファイルポインタfpから1行、またはlenバイト読み込んでその先頭アドレスを返す。
全行を読み込んだ場合、又はエラー時にNULL(\0)を返す。

 

注意事項

本関数fgetsは読み込みバイト数がファイルサイズに達するとNULLを返すが、エラー時もNULLを返すので区別が付かない。このことから一般的にはエラー判定は行わずNULLの返却を以って全行読み込んだものとしている。これは、もしファイルに障害があって読み込み不能であった場合、ファイルオープン時にエラー検出可能であるからだと言われている。

確実に判別したい場合には、feofferrorを使用すれば判別できる。

 

 

使い方

int main(void)
{

FILE *rfp;
char buf[2048];
char *look;
char find[1024] = "root";

if *1 == NULL ) {

fprintf(stderr,"ERROR");
}

while( fgets(buf,BUF,rfp) != NULL ) {

if*2 != NULL ) {

printf("%s",look);
}
}
}

*1:rfp = fopen("/etc/passwd","r"

*2: look = strstr(buf,find