C++打开和写入文件fopen和fopen_s

C++打开和写入文件fopen()和fopen_s()

参考了https://blog.csdn.net/qq_35263780/article/details/79870792

fopen :

FILE *fp1;//建立一个文件操作指针
fp1= fopen (“111.txt”, “a”); //将指向这个文件的文件流给fp1
fprintf(fp1,“input format : %s \n”, name); //写入,会返回值表明有没有成功
fclose(fp1);

注意fopen函数在vs2019可能会报错,说不安全(但是有时候又不报错?很奇怪不知道具体原因是什么),提示要用fopen_s()。实际上硬要用fopen也是可以的,需要加入定义:
#define _CRT_SECURE_NO_WARNINGS
加在代码最上方即可。

fopen_s :

FILE *fp1;//建立一个文件操作指针
errno_t err; //判断此文件流是否存在 存在返回1
err = fopen_s(&fp1,“File Information.txt”, “a”); //若return 1 , 则将指向这个文件的文件流给fp1
fprintf(fp1,“input format : %s \n”,name); //写入
fclose(fp1);

访问方式:

“r”
打开以进行读取。如果该文件不存在,或无法找到,fopen_s调用失败。
“w”
打开一个空文件以进行写入。如果该文件存在,其内容将被销毁。
“a”
打开以进行写入 (追加) 而不将新数据写入文件之前删除的 EOF 标记文件的末尾。如果它不存在,则创建该文件。
“r+”
将打开并读取和写入。 (该文件必须存在。
“w+”
打开一个空的文件进行读写。如果该文件存在,其内容将被销毁。
“a+”
将打开并读取文件和追加。追加操作包括删除 EOF 标记的新数据写入到文件并在编写完成后还原 EOF 标记之前。如果它不存在,则创建该文件。
通过打开文件时"a"或"a+"访问类型,所有写操作出现在文件的结尾。可通过使用定位文件指针fseek或rewind,但其始终移回至该文件的末尾之前任何写入,因此无法覆盖现有数据执行操作。
"a"模式下不会追加到该文件之前删除 EOF 标记。追加发生后,MS-DOS TYPE 命令仅显示最原始的 EOF 标记的数据和追加到文件中没有任何数据。"a+"模式不会追加到该文件之前删除的 EOF 标记。后追加,MS-DOS TYPE 命令在文件中显示所有数据。"a+“模式所需的追加到流文件,将终止通过使用 CTRL + Z EOF 标记。
当"r+”,“w+”,或"a+"指定访问类型,允许读取和写入。 (就说是打开"更新"文件)。 但是,当从阅读切换到书写,输入的操作必须会遇到 EOF 标记。如果没有任何 EOF,则必须使用中间文件定位函数调用。文件定位函数是fsetpos,fseek,和rewind.从读数到写切换时,您必须使用中间调用fflush或文件定位函数。

你可能感兴趣的:(C++学习)