在fopen()函数中,"rb+"和"ab"有什么区别?

4

我不了解在C语言中使用fopen()时,"ab""rb+"模式之间的区别。

为什么我要选择其中一个而不是另一个呢?


3
a 模式下,您无法搜索或读取;所有写入都将添加到文件末尾。在 r+ 模式下,您可以搜索、读取和写入。 - M.M
正如man 3 fopen中明确描述的那样。 - Nominal Animal
https://www.programiz.com/c-programming/c-file-input-output - msc
阅读标准对此的解释:http://port70.net/~nsz/c/c11/n1570.html#7.21.5.3p3 - ad absurdum
你只需要仔细查看文档,难道这很困难吗? - Ajay Brahmakshatriya
1个回答

9
使用上面的模式标识符打开文件将以文本文件的形式打开。为了将文件作为二进制文件打开,必须在模式字符串中包含一个“b”字符。这个额外的“b”字符可以附加在字符串的末尾(从而形成以下复合模式:“rb”,“wb”,“ab”,“r+b”,“w+b”,“a+b”),也可以插入字母和“+”号之间,用于混合模式(“rb+”,“wb+”,“ab+”)。
请先阅读fopen文档,然后再提问。它会给您提供有关可能的参数、返回值、类似函数等的许多信息。
此外,从同一文档中:
“a”=追加:在文件末尾打开输出文件。输出操作总是写入数据到文件的末尾,扩展它。重定位操作(fseek,fsetpos,rewind)将被忽略。如果文件不存在,则创建该文件。
“r+”=读/更新:打开文件以进行更新(输入和输出)。文件必须存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接