向文件末尾写入数据的两种C语言实现方式是否等效?
两种C语言文件写入方法是否等效?
你的判断不正确,两种方法存在核心差异,具体区别如下:
核心行为差异
第一种方法(
"wb"模式):
使用"wb"打开文件时,若文件已存在,会直接清空原有所有内容,将文件截断为0长度。之后调用fseek(f,0,SEEK_END)只是将指针定位到空文件的末尾(也就是起始位置),最终写入的整数4会成为文件的唯一内容。对应的代码:
int a = 4; FILE *f = fopen("file.txt","wb"); fseek(f,0,SEEK_END); fwrite(&a,sizeof(int),1,f);第二种方法(
"ab"模式):
使用"ab"打开文件时,若文件已存在,会保留原有内容,文件指针自动定位到文件末尾,写入的整数4会直接追加到原有内容之后,不会破坏原有数据。对应的代码:
int a = 4; FILE *f = fopen("file.txt","ab"); fwrite(&a,sizeof(int),1,f);
唯一的相同场景
只有当目标文件不存在时,两种方法的结果才一致:都会创建新文件,并写入整数4。
内容的提问来源于stack exchange,提问作者sacacorchos
相关产品推荐
相关产品推荐

