|
ファイルに1文字列を書き出す関数を作る。
//*********************************************************
// ファイルに文字列と文字列の終了を示す空文字を書き出す関数。
//*********************************************************
int
fputsz
(
char *Buf,
FILE *fp
)
{
if ( fp == stdout )
{
// 標準出力については関数fputs() を使用する
return (fputs(Buf,fp)!=EOF);
}
else
{
// 文字列と文字列の終了を示す空文字を書き出す
return ((EOF != fputs(Buf,fp))
&& (EOF != fputc('\0',fp)));
}
}//fputsz
ファイルから1文字列を読み込む関数を作る。 //*********************************************************
// ファイルから1文字列(ファイル終端か空文字('\0')まで)を読み込む関数。
// 読み込まれた文字列は空文字で終了する。
// ファイル終端で文字列が読み込まれなかった場合は偽を、さもなくば真を返す。
//*********************************************************
int
fgetsz
(
char *Buf,
int BufSize,
FILE *fp
)
{
int i, c;
// 標準入力については関数fgets() を使用する
if ( stdin == fp )
{
return (int)fgets( Buf, BufSize, fp );
}
// 最大で 指定されたバッファサイズ-1 まで読み込む
for( i = 0;
i < BufSize-1;
++i )
{
// fp から1文字を読み込む
c = fgetc( fp );
// 読み込んだ文字をバッファに書き込む。
// ただし EOF であれば空文字を書き込む。
Buf[i] = ((c==EOF)?'\0':c);
if ( Buf[i] == '\0' )
{
// 読み込んだ文字列長が0で最後の読み込みがEOFであれば偽を
// さもなくば真を返す
return !((i==0)&&(c==EOF));
}
}
// 指定されたバッファサイズ-1 の間に空文字もEOFもない場合
{
// fp から1文字を読み込む
c = fgetc( fp );
// 読み込まれた文字が空文字でもEOFでもない場合
if ((c!=EOF)&&(c!='\0'))
{
// 読み込んだ文字を fp に戻す。
ungetc( c, fp );
}
// 文字列の終了を示す空文字を書き込む
Buf[i] = '\0';
}
// 真を返す
return 1;
}//fgetsz
|
|
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
>> Amazon.co.jp 『たまゆら童子』 へ
>> 楽天ブックス 『たまゆら童子』 へ