fwrite的行为

时间:2016-10-17 09:48:41

标签: posix standards gnu

我假设有一个文件填充数据。

如果我以"r+"模式和seek打开此文件到任何非EOF位置 和write这个文件的一个或多个字符,将是什么 标准结果?

  • 在POSIX
  • 在GNU中
  • 在DOS / Windows中?

是否会覆盖或移动以下字符?

如果需要一个例子,这可能就是这样一个文件:

档案a.tx

abcdefghijklmnopqrstuvwxyz

C code snippet:

FILE * f = fopen("a.tx", "r+");
fseek(f, 5, SEEK_SET);
char * str = "12";
fwrite(str, 1, 2, f); // this is just an example

1 个答案:

答案 0 :(得分:0)

这是一个非常非常基本的I / O行为......与POSIX,GNU或DOS / Windows无关,它只是标准的C。

它只会在第5位写入12(从0开始计数),因此将12写在fg上。请注意,这可能无法在文件中立即显示,因为写入可能会被缓冲;如果你刚刚关闭或刷新文件,那么数据肯定会被写入物理目的地。

操作系统中通常没有移位(您的意思是插入权利?),而您可以将其视为基本功能,将某些内容插入文件需要将太多操作视为一个基本的OS功能。