文件操作之标准IO
fopen打开文件
函 数 详 情 | 原型:FILE *fopen(const char *pathname,const char *mode) 参数:const char *pathname 表示文件的路径(以字符串的形式表示) const char *mode 表示打开文件的方式 打开方式解释:常用的r --->表示只读O_RDONLY w --->表示只写O_WRONLY w+ --->表示可读可写-可创建-可覆盖 r+ --->表示可读可写 a+ --->表示可读可写-可创建-可追加 O_WRONLY|O_CREAT|O_TRUNC --->表示只写、可创建、可覆盖 O_WRONLY|O_CREAT|APPEND --->表示只写、可创建、可追加 O_RDWR|O_CREAT|O_TRUNC --->表示读写,可创建,可覆盖 返回值:成功,返回文件的指针 FILE *类型的 失败,返回NULL 功能:打开文件,有可能创建文件 |
示 例 | FILE *fp; fp=fopen("./1.txt","w+"); if(fp == NULL) { printf("fopen error \r\n"); return -1; } |
fclose关闭文件
函 数 详 情 | 原型:int fclose(FILE *stream) FILE *fp 对应文件的描述符 参数:FILE *stream --->表示文件流指针(一般对应的fopen()函数的返回值) 返回值:成功 返回0 失败 返回-1 功能:关闭一个文件流 |
示 例 | b=fclose(fp); if(b == 0) { printf("exit success\r\n"); } |
fwrite写文件
函 数 详 情 | 原型: size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream) 参数: const void *ptr --->缓存空间的地址 -->存放数据的地方 size_t size --->表示每块数据的长度(一般情况下长度为1) size_t nmemb --->表示数据块的个数 FILE *stream --->表示文件流指针 -->利用fopen获取对应的文件流fp 返回值:返回实际写到的数据个数 功能:从ptr执行的缓存空间读取nmemb块的数据,每块数据的长度按照size(nmemb * size单位字节) |
示 例 | //利用fwrite函数,往对应的文件里面写入数据 a=fwrite(buf,1,sizeof(buf),fp); printf("a = %d\r\n",a); |
fread读文件
函 数 详 情 | 原型:size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream); 参数: void *ptr --->缓存空间的地址 --->获取数据之后,把对应的数据放到相应的位置 size_t size --->表示每块数据的长度(一般情况下长度为1) size_t nmemb --->表示数据块的个数 FILE *stream --->表示文件流指针 返回值:返回实际读取到的数据长度 功能:从stream对应的文件中读取nmemb块数据,每块数据的大小为size,最后将读取的数据写入到ptr指向的缓存空间中 |
示 例 | 功能:从键盘上获取数据--文件流指针 stdin char buf[64]; fread(buf,1,sizeof(buf),fp); //补充:可以利用stdin或者stdout进行标准输入和输出 |
fseek调整文件读写位置
函 数 详 情 | 原型:int fseek(FILE *stream , long offset, int whence); 参数: FILE *stream ----->表示文件流指针 long offset ----->表示相对的偏移量 int whence ----->表示偏移基点--注意可以填写的有SEEK_SET|SEEK_CUR|SEEK_END 返回值:成功 返回0 失败 返回-1 功能:重新调整文件的读写位置 |
示 例 | 用fseek()函数实现计算文件的大小 fseek(fp,0,SEEK_END); f_size = ftell(fp); printf("%s 文件的大小是%d\r\n",filename,f_size); |
fscanf从文件获取数据到缓存空间
函 数 详 情 | 原型: int fscanf(FILE *stream,const char *format,...); 参数: FILE *stream --->文件流指针 const char *format --->输入格式 --对应字符串 返回值:成功 返回有效的输入字符的个数 失败 返回-1 功能:从文件中获取数据写入到对应的缓存空间中 注意:通过fscanf()函数获取字符串的时候,空格将被视为分割符号。abcdef |
示 例 | fscanf(fp,"%s",str); |
fprintf缓存空间数据写到文件里
函 数 详 情 | 原型:int fprintf(FILE *stream,const char *format,...); 参数:FILE *stream --->文件流指针 const char *format ---> 类比printf() 返回值:成功,返回输出的字符个数。 失败, 返回负数 功能:可以将缓存空间的内容写入到文件中。 |
示 例 | fprintf(fp,"good morming"); --->类比:printf(“good morming”) |
fgetc从文件获取一个字符
函 数 详 情 | 原型: int fgetc(FILE *stream) 参数: FILE *stream --->文件流指针 返回值:成功的话,返回读取到的字符。 失败的话,返回EOF 功能:从文件中获取一个字符 |
示 例 | ch=fgetc(fp); printf("ch = %c\r\n",ch); |
fputc字符写入文件中
函 数 详 情 | 原型: int fputc(int c,FILE *stream); 参数: int c ---->表示待写入字符 FILE *stream --->文件流指针 返回值:表示成功写入字符的个数 功能:将指定的字符写入到文件流中。 |
示 例 | //利用fputc函数 a=fputc(ch , fp); if(a != 0) { printf("fputc success\r\n"); printf("a = %d\r\n",a); } |
fgets从文件获取数据到内存空间
函 数 详 情 | 原型: char *fgets( char *str, int num, FILE *stream ); 参数: char *str ; //要获得数据的对象。 int num; //表示最多获取到的字符个数 FILE *stream --->文件流指针 功能:fgets()从stream所指向的文件内部读取字符并存到str指向内存空间中。 |
示 例 | fgets(buf,sizeof(buf),stdin); //利用stdin从键盘里面获取信息,存储到buf |
fputs字符串写入文件
函 数 详 情 | 原型: int fputs(const char *s,FILE *stream); 参数 const char *s ---->表示要传入数据的地址 返回值:如果成功的话返回写入字符的个数。 失败的话 EOF 功能:将参数s指向的字符串,写入到文件中。 |
示 例 | fputs(buf,stdout); //利用stdout将对应的信息输出到屏幕 |
feof读写位置是否到达文件末尾
函 数 详 情 | 原型:int feof(FILE *stream); 返回值:如果读写位置达到文件的末尾,则返回非0--->读到文件的末尾了,返回是一个非0值 如果读写位置没有达到文件的末尾,则会返回0 |
示 例 | while(feof(fp) == 0) //判断读取文件内容没有达到文件的末尾 { rd_len = fread(buf,1,sizeof(buf),fp); fwrite(buf,1,rd_len,stdout); } |
fflush把缓存区数据写回文件中
函 数 详 情 | 原型: int fflush(FILE *stream); 参数: FILE *stream --->文件流指针 返回值:成功 返回0 失败的话返回NULL 功能:fflush()函数将缓存区的数据写回到stream文件中。 |
示 例 | fflush(stdout); //将缓冲区的内容在终端上进行输出 |
小广告:
好好学习,天天向上