基本知识要点:
C语言中要打开一个文件,需要调用fopen函数。
一、函数名:fopen
二、头文件:stdio.h
三、函数声明:
FILE * fopen(const char * path,const char * mode);
四、函数参数:
参数path字符串包含欲打开的文件路径及文件名,可以是相对路径,也可以是绝对路径。
参数mode字符串则代表着流形态。常见的mode形式有如下几种:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
五、返回值:
如果操作成功,会返回一个非空的FILE*指针,该指针用于后续对文件的操作,如读、写、关闭等。
如失败返回NULL。
在C语言中提供了多种文件读写的函数:
·字符读写函数 :fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf
————————————————
原文链接:https://blog.csdn.net/sinat_36053757/article/details/68954014
重点详解格式化读写函数fscanf和fprintf
fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。两者的区别在于fscanf函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。
这两个函数的调用格式为:
fscanf(文件指针,格式字符串,输入表列);
fprintf(文件指针,格式字符串,输出表列);
例如:
fscanf(fp,"%d%s",&i,s);
fprintf(fp,"%d%c",j,ch);
用fscanf和fprintf函数也可以完成程序如下所示。
main(){
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen(“stu_list”,“wb+”))==NULL){
printf(“Cannot open file strike any key exit!”);
getch();
exit(1);
}
printf("\ninput data\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
pp=boya;
for(i=0;i<2;i++,pp++)
fprintf(fp,"%s %d %d %s\n",pp->name,pp->num,pp->age,pp->addr);
rewind(fp);
for(i=0;i<2;i++,qq++)
fscanf(fp,"%s %d %d %s\n",qq->name,&qq->num,&qq->age,qq->addr);
printf("\n\nname\tnumber age addr\n");
qq=boyb;
for(i=0;i<2;i++,qq++)
printf("%s\t%5d %7d %s\n",qq->name,qq->num, qq->age,qq->addr);
fclose(fp);
}
可参考原文链接:https://blog.csdn.net/qq_42957923/article/details/84647027
相对路径和绝对路径:
相对路径:顾名思义,就是文件与文件之间的相对位置。即以当前文件为起始文件,的相对位置。
绝对路径:通俗的讲,完整的描述文件位置的路径就是网站路径。例如“C:\test\mshi03.jpg”或者“https://www.baidu.com/img/bd_logo1.png”
具体关于这个的讲解可参考 https://blog.csdn.net/mllovehk/article/details/83003677