我知道在C ++中,EOF字符会自动附加到文件末尾,例如filestream.close。我想知道,这也是在C中完成的吗?
答案 0 :(得分:6)
ThreadPool.QueueUserWorkItem((s) =>
{
var keeprunning = true;
sourceStream.RecordingStopped += (rss, rse) => { keeprunning = false; };
while(keeprunning)
{
if (writebuffer.Count==0)
{
Thread.Sleep(0);
}
else
{
var buf = writebuffer.Dequeue();
waveWriter.Write(buf,0,buf.Length);
// Thread.Sleep(100); // for testing
}
}
waveWriter.Dispose();
waveWriter = null;
});
不是角色。它是某些操作返回的非字符EOF
值,表示已到达文件末尾。所以问题就变成了#34; C中的int
函数是否会关闭文件"当然是这样的。
答案 1 :(得分:1)
没有EOF
个字符。 EOF
根据定义" 不等于任何有效的字符代码"。通常是-1
。它不会在任何时候写入文件。
DOS中有一个历史 EOF 字符值(CTRL+Z)
,但它现在已经过时了。
要回答您的问题fclose
与filestream.close
非常相似,请关闭该文件。
另请参阅:reference answer
答案 2 :(得分:1)
如果 有一个明确的文件结束字符需要写入文件,那么是的,fclose
会安排写它。你不必自己写。
例如,曾几何时,MS-DOS下的文本文件在其末尾具有显式的control-Z文件结束字符。在那个操作系统下的C语言中,我希望在调用fclose
时写入control-Z字符。 (但话虽如此,自从使用MS-DOS以来已经很久了,我不能说我记得肯定会看到这种情况发生。)
今天,正如其他答案所说,我们关心的操作系统都不需要磁盘文件中明确的文件结束字符,所以这个问题没有实际意义。
答案 3 :(得分:0)
确实如此,但不是作为角色。(请参阅您的问题中的评论)
但是,您甚至可以使用(feof(file))
进行检查。它就像一个国家。