看一个函数,一看参数个数,参数格式, 二看函数返回值
查看12.17号写的程序。
FILE*fp 定义一个文件指针变量,fp
fp = fopen(“a.txt”, “w”);
打开了a.txt文件,fp指向了该文件,作为该文件的标记位。
第一个参数是文件名组成的字符串,或字符串指针,或字符数组名。
就可以在当前文件里面对a.txt文件 (只能)进行 写 操作(r只读,a在a.txt后面追加操作)
对于以a方式打开的文件rewind 和fseek函数不能改变文件偏移指针的位置,永远指向文件尾。
如果想读里面的数据,必须先fclose(fp),然后以a +或r的的方式打开fp指向的文件。
不能以w或w+的方式打开fp指向的文件,这样会使文件内容被覆盖掉。
常用if(NULL ==(fp=fopen(“文件名”,“打开方式”))
fclose(fp);//关闭fp所指向的文件,此后fp不在指向a.txt 文件。
参数是文件指针。
文件缓冲区4096个字节,内存每存入4096个字节就会自动的往磁盘里写入一次,遇到fclose函数也会往磁盘里面写入。
文件空洞:用数值0
创建一个大于2.5g的文件
gets()函数不再使用,getchar()会把\n存在缓冲区内,再次遇到getchar()时取得\n等价于执行enter键。
fgetc(fp)从fp指向的文件读入一个字符。成功返回所读的字符,失败返回EOF 也就是-1
fputc(‘c’,fp)向fp指向的文件里面写入一个字符,第一个参数代表一个字符,或字符变量,或字符数组里面的元素。成功返回该字符,失败返回0
fgets(str,n,fp)从fp指向的文件复制 n-1 个字节,第n个字节系统自动赋为 "\0 " 放到str字符数组元素sti[n-1]中。成功返回str的指针,失败返回NULL.第一个参数是字符数组名,字符串。
fputs (str,fp)把字符数组中的字符串复制到fp指向的文件中,成功返回0;失败返回非0值。第一个参数是字符串指针,字符数组名,字符串常量。
'\0'字符会不会被写到写到文件里面去,不知道,不过 再次字符串时会直接在后面写进去。
fprintf(文件指针,格式字符串,输出变量列表);
fprintf(fp,“%d,%f”,i,f);//成功返回处理数据 占 的字节数
fscanf(fp,“%d,%f”,&i,&f);
这两个函数比printf 和scanf函数仅仅多了一个参数 文件指针,告诉我们要输入输出的文件是哪一个。成功返回格式字符串里面参数的个数
fread(buffer,size,count,fp);//从文件里面读的时候,是要把文件里的二进制文件转换成ascii码。
参数从后往前的意思是,从fp指向的那个文件里面读取count块儿每块长度为size个字节的数据,放到当前程序所占内存的buffer区。
fwrite(buffer,size,count,fp);//往文件里面写的时候,把ascii码转换成二进制文件。
参数从后往前的意思是,从当前程序所占内存的buffer区读取count块儿每块长度为size个字节的数据,放到fp指向的那个文件里面。
上两个函数读写的是二进制数据
用rewind 函数使文件位置标记指向文件开头。
fseek(文件指针,+—移动的字符数L,SEEK_*),第一个参数代表要移动的文件的标志符,第二个参数代表要将标识符 前、后移动的字符个数,+代表后移动。— 号代表前移。
第三个参数代表要将标识符从哪个地方移动,0,SEEK_SET代表文件首,1,SEEK_CUR代表标识符当前位置,2,SEEK_END代表文尾部。
ferror (fp);用来检查文件输入输出的错误检测。没错误返回0;出错返回非0;
clearerr(fp);