fwrite 的行为
Behaviour of fwrite
我假设有一个充满数据的文件。
如果我以 "r+"
模式打开此文件并 seek
到任何非 EOF 位置
和 write
这个文件的一个或多个字符,那将是什么
标准结果?
- 在POSIX
- 在 GNU 中
- 在DOS/Windows?
是否会覆盖或移动以下字符?
如果需要示例,这可能是这样一个文件:
文件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 功能的操作。
我假设有一个充满数据的文件。
如果我以 "r+"
模式打开此文件并 seek
到任何非 EOF 位置
和 write
这个文件的一个或多个字符,那将是什么
标准结果?
- 在POSIX
- 在 GNU 中
- 在DOS/Windows?
是否会覆盖或移动以下字符?
如果需要示例,这可能是这样一个文件:
文件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 功能的操作。