首先先解决文件操作的具体函数,如下(fp为文件指针,指向一个文件):
1.(1)fopen fopen("****.txt","a "); 打开一个文件,并指定打开文件的方式。(可以自己在屏幕输入字符来打开自己想要的文件)成功返回一个文件指针(文件信息起始地址),失败返回一个NULL/0
方式如下:
r表示可读,没有这个文件会报错,返回值NULL;
w表示可写,如果没有文件可以创造一个新文件,如果原文件有内容则会删除内容
wb+表示二进制文件的可读写,如果没有原文件就创造一个新文件
rb+也表示二进制文件的可读写,但只能在已经有这个二进制文件中使用(所以考试中尽量选wb+)
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
fclose(fp);关闭文件,释放缓存区。成功返回0,失败返回1;(成功/失败取决于文件是否有错)
feof(fp);主要是判断文件是否结束(结束返回非0值,否则返回0值)常与调用函数读取或存在文件信息存放到数组梦幻联动.
eg:while(!feop(fp))
{
fread(str,sizeof(struct stu),n,fp);
}
此时读取了文件所有信息
ferror(fp);返回1说明有错,0说明没错。
clearerr(fp);交换ferror和feof的返回值。
2.(注意:此处str相当于首地址哦!)
fgetc(fp); 一般与char ch; ch=fgetc(fp); putchar(ch);梦幻联动
fputc(str,fp); 把数据传输到文件里
fputs(str,fp);
fgets(str,n,fp); 从文件中指定读取(n-1)个数据
fprintf(fp,%,输出成员); 把数值传给文件
fscanf(fp,%,输入成员); 从文件中读取数据
fwrite(*butter,sizeof(),n,fp); 作用于二进制文件,写入文件;
fread(*butter,sizeof(),n,fp); 作用于二进制文件,读取文件;其中butter表示指针,指向存放数据的地址
ftell(fp);告诉你当前指针位置;
rewind(fp);回到文件开头;
fseek(fp,n,m) n有正负值,正值表示向后移动,负值表示向前移动,m有0-2,0表示文件开头,1表示当前位置,2表示文件结尾
(3)特别注意几个关键函数的返回值!:
fgetc(fp);成功返回得到的字符,失败返回EOF
fputcstr,fp);成功返回得到的字符,失败返回非0
fgets(str,n,fp);成功返回地址str,失败返回返回NULL/0
fputs(str,fp);成功返回0,失败返回返回非0
ferror(fp);返回1说明有错,0说明没错。
fclose(fp);成功返回0,失败返回1;(成功/失败取决于文件是否有错)