2016-10-17 43 views
-1

我假设有一个填充数据的文件。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 
+0

有一个downvote,为什么?我如何改进我的问题? – LittleByBlue

回答

0

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

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

一般没有(你的意思是将正确的?)在操作系统中提供,而你可以认为这是一个基本的功能,将东西放到一个文件必要过多的操作被视为一个基本的OS功能。

+0

a * shift *将会是'abcdefghi ...'** - > **'abcde12fghi ...'。这正是我想知道的,尽管我认为这有一个标准。 – LittleByBlue

+0

这不是所谓的移位,而是插入。 –