C 我如何打开一个文件,如果该文件没有';不存在它将自动创建并打开吗?
下面是我如何打开文件以写入+:C 我如何打开一个文件,如果该文件没有';不存在它将自动创建并打开吗?,c,file-io,fopen,C,File Io,Fopen,下面是我如何打开文件以写入+: if( fopen_s( &f, fileName, "w+" ) !=0 ) { printf("Open file failed\n"); return; } fprintf_s(f, "content"); 如果文件不存在,则打开操作失败。如果我想在文件不存在的情况下自动创建文件,那么使用fopen的正确方法是什么 编辑:如果文件确实存在,我希望fprintf覆盖该文件,而不是附加到该文件。要覆盖任何现有文件,请使用创建调用: #i
if( fopen_s( &f, fileName, "w+" ) !=0 ) {
printf("Open file failed\n");
return;
}
fprintf_s(f, "content");
如果文件不存在,则打开操作失败。如果我想在文件不存在的情况下自动创建文件,那么使用fopen
的正确方法是什么
编辑:如果文件确实存在,我希望fprintf覆盖该文件,而不是附加到该文件。要覆盖任何现有文件,请使用
创建
调用:
#include <fcntl.h>
#include <stdio.h>
int fd = creat (fileName, 0666); // creates file if not exist, overwrite existing
FILE *f = fdopen (fd, "w"); // optional, if FILE * type desired
#包括
#包括
int fd=creat(文件名,0666);//创建文件如果不存在,覆盖现有文件
文件*f=fdopen(fd,“w”);//可选,如果需要文件*类型
您是否尝试过使用fopen(名称,“w”)?此外,您可能还应该扩展代码以报告发出信号的错误,例如使用peror()
注
顺便说一句,尽管有警告,我还是会避免(至少大部分)MSVC的\u
功能。除了以下情况外,没有什么意义:
strcat()
),或者strerror()
),这使得这些功能是不可移植的。简而言之,大多数函数(包括
fopon_s()
)都是不可移植的,使用它们会降低程序的可移植性,但不会带来任何好处。(不兼容的C补遗只会让事情变得更糟——除非MS实现了它,在这种情况下,它可能只会让事情变得更混乱。)模式w+
已经是正确的模式:它会导致打开一个空文件进行读写,不管该文件是否已经存在。您需要查看fopen_s()
中的非零返回值,以了解调用失败的原因。如果您不需要随机访问(而且您可能不需要),只需使用w
模式即可。@RBerteig:谢谢。你能用一个代码示例来回答这个问题吗?在这个示例中,你告诉我如何使用fopen_s()返回值来创建一个新文件,以防该文件不存在?