fputsとfgets

2001 ワード

1.      fputs
関数名:fputs機能:1つの文字を1つのストリームに送る方法:int fputs(char*string,FILE*stream); 
 
説明:
fputsは、指定したファイルに文字列を書き込む機能(文字列終了フラグ'0'を自動的に書き込まない)を持つ関数です.文字列の書き込みに成功すると、ファイルの位置ポインタが自動的に後退し、関数の戻り値は非負の整数になります.そうでなければEOF(符号定数、値-1)が返されます.
バッファstringには'/0'で終わる文字列が保存され、fputsはファイルstreamにその文字列を書き込みますが、最後の'/0'は書き込みません.fgetsとは異なり、fputsが関心を持たない文字列の'/n'文字は、文字列に'/n'があっても'/n'プログラム例がなくてもよい:#include int main(void){/*write a string to standardoutput*/fputs(「Hello world,stdout);return 0; } 
 
ファイルストリームに出力することもできます
 
2.      fgets
関数名:fgets機能:fgets指定したファイルから呼び出し元が提供するバッファに1行の文字を読み込む
使用方法:char*fgets(char*string,int size,FILE*stream); 
 
説明:
次にfgets関数といえば、パラメータstringはバッファの最初のアドレスであり、sizeはバッファの長さであり、streamが指すファイルから'/n'で終わる行('/n'を含む)をバッファstringに読み出し、行の末尾に'/0'で完全な文字列を追加する.
ファイルの1行が長すぎる場合、fgetsはファイルからsize-1文字がまだ'/n'に読み込まれていない場合、読み込んだsize-1文字と'/0'文字をバッファに格納し、ファイルの残りの半分の行は次回fgetsを呼び出すときに読み続けることができます.
1回のfgets呼び出しが複数の文字を読み込んだ後にファイルの末尾に到達した場合、読み込んだ文字列に'/0'を付けてバッファに格納して戻り、再びfgetsを呼び出すとNULLを返し、これに基づいてファイルの末尾に読み込まれたかどうかを判断できます.
注意:
fgetsの場合、'/n'は特別な文字ですが、'/0'には特別な点はありません.'/0'を読むと普通の文字として読み込まれます.ファイルに'/0'文字(または0 x 00バイト)が存在する場合、fgetsを呼び出すとバッファ内の'/0'がファイルから読み込まれた文字なのか、fgetsによって自動的に追加された終了文字なのかを判断できないため、fgetsはバイナリファイルを読むのに適しておらず、テキストファイル内のすべての文字が可視文字であるべきであり、'/0'はありません.プログラム例:#include#include int main(void){FILE*stream;char string[]="This is atest";char msg[20];/*open a file for update*/stream=fopen("DUMMY.FIL","w+");/*write a string into the file*/fwrite(string,strlen(string),1,stream);/*seek to the start of the file*/fsek(stream, 0, SEEK_SET);   /* read a string from the file */    fgets(msg, strlen(string)+1, stream);   /* display the string */    printf("%s", msg);    fclose(stream);    return 0; }