ページ 11

fopen_s -> fgets で原因不明のデータをもってくる

Posted: 2012年12月07日(金) 19:47
by dic
dicです タイトルの通り fopen_s でファイルを開いたあと、fgets関数で、1行読み込むのですが、
読み込んだデータに 意味不明なデータが含まれます
ファイルポインタを先頭にセットしても、先頭に意味不明なデータが含まれます
コードをしたに、画面もはっておきます
なぜ、こんな現象が起こるのでしょうか?

変数 char buf[80] の中身が ???3000000 になります

待機時間.txt の内容は
300000
の一行だけとなっています

コード:

void	function15()
{
	FILE	*file = 0;
	if( fopen_s( &file, "待機時間.txt", "rt" ) == 0 )
	{
		fseek( file, 0, SEEK_SET );

		char	buf[80];
		memset( buf, 0, sizeof(buf) );
		fgets( buf, 80, file );

		int		sleep;
		sleep = atoi(buf);

		Sleep( sleep );

		fclose( file );
	}
}

Re: fopen_s -> fgets で原因不明のデータをもってくる

Posted: 2012年12月07日(金) 19:55
by nil
待機時間.txtが
UTF-8などの形式で保存されていませんか?

Re: fopen_s -> fgets で原因不明のデータをもってくる

Posted: 2012年12月07日(金) 20:00
by dic
>>涼雅さん
待機時間.txt を調べてみました
そしたら UTF-8 で保存していました

ANSI 形式にしたら無事、char buf[80] に 300000 が代入されました

解決しました
ありがとうございました

Re: fopen_s -> fgets で原因不明のデータをもってくる

Posted: 2012年12月08日(土) 08:12
by beatle
もしかしたら、先頭についていたデータはBOMかもしれませんね。
BOM【Byte Order Mark】