文件类型指针
FILE *指针变量名//例如:FILE *fp;
文件指针不同于文件位置,文件指针指向文件位置,在使用前必须在程序中定义即使文件指针指向某个文件。
文件的打开(fopen函数)
fopen(文件名,文件的使用方式)//打开成功返回指向该文件的FILE类型的文件指针,打开失败返回NULL
文件的使用方式(以文本为例,二进制文件在字母后面加b就好):
文件的读取
fgetc();
作用:能够从文件中读取一个字符,并且把光标(文件指针)移动到下一个字符,文本结束有EOF(宏定义标记读到末尾)。
读取文件内容程序事例(文本文件):
char ch;while((ch = fgetc(fp)) != EOF)//while(EOF != (ch = fgetc(fp))){printf("%c",ch);}
读取二进制文件时不能使用上述方法(二进制文件结尾没有EOF标识符),应使用feop(fp);(文件结束返还值为非零,否则为0)
程序写法:
char ch;while(!feof(fp)){ch=fgetc(fp);printf("%c",c);}
fgets();
fgets(char *s, int size, FILE *stream);
作用:与fgetc大致相同,不同的是fgets可以一次性读取一行
程序:
char str[200];//长度可以自己规定while(fgets(str,200,fp))//函数第一个参数为存放读取内容的地址,第二个参数为自己定义的数组长度{printf("%s\n",str);}//读取整个文件的方法与fgetc相同
fread();
fread( void *buffer, size_t size, size_t count, FILE *stream )
作用:相比于前两个函数这个函数的强大之处在于可以随意的读取文件的内容的。
程序:
char str[200]={0};while(fread(str,1,100,fp){printf("%s",str);}
文件的写入
fputc()
fputc(int char, FILE *stream)
fputc('A',fp);
fputs()
fputs(const char *str, FILE *stream)
char *str="ABCDEFG";//如果想换行,换行符需要自己添加。fputs(str,fp);
fwrite()
fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
程序:
char *str="ABCDEF"fwrite(str,1,strlen(str),fp)//fwite 可以写入任何类型int num=123456;fwrite(&num,sizeof(num),1,fp)
文件指针定位
rewind()
rewind(fp);
函数功能:将文件的读/写指针移动到文件开头
fseek()
fseek(FILE *stream, long offset, int fromwhere);
程序:
fseek(fp,100L,0);//把fp指针移动到离文件开头100字节处;fseek(fp,100L,1);//把fp指针移动到离文件当前位置100字节处;ffseek(fp,-100L,2);//把fp指针退回到离文件结尾100字节处。
文件关闭
fclose()
fclose(fp)
正常关闭返回0,否则返回EOF。