fwrite 的行为

Behaviour of fwrite

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

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

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

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

文件a.tx:

abcdefghijklmnopqrstuvwxyz

C 代码片段:

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

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

它只会在位置 5 处写入 12(从 0 开始计数),因此在 fg 上写入 12。请注意,这可能不会立即在文件中可见,因为写入可能会被缓冲;如果您紧接着关闭或刷新文件,那么数据肯定会写入物理目标。

在操作系统中通常没有 shifting(你的意思是插入对吗?),虽然你可以将其视为基本功能,但将某些内容插入文件需要太多被视为基本 OS 功能的操作。