美图欣赏 | 设为首页 | 加入收藏 | 网站地图

当前位置:电脑中国 > 编程 > C语言 >

文件操作总结

2018-02-11 09:41|来源:未知 |作者:dnzg |点击:

1. 打开文件

函数定义:FILE *fopen(char *pname, char *mode)

函数说明:pname 是文件名,mode 是打开文件的方式( r:只读,w:只写)

返回值:若返回 NULL,则打开失败。

 

2. 关闭文件

函数定义:int fclose(FILE *stream)

函数说明:stream 为指向 FILE 对象的指针

返回值:若返回 0,则关闭成功。

 

3. 读取一个字符

函数定义:int fgetc(FILE *stream)

函数说明:stream 为指向 FILE 对象的指针

返回值:若返回 EOF,则读取失败。

 

4. 写一个字符到文件中

函数定义:int fputc(int char, FILE *stream)

函数说明:char 为要写入的字符,以整形传递;stream 为指向 FILE 对象的指针

返回值:若返回 EOF ,则写入失败。

 

下面使用上面函数实现功能,将一个文件的内容复制到另一个文件中去。代码如下:

 1 /*
 2     文件操作:将一个文件的内容复制到另一个文件中去 
 3 */
 4 
 5 #include <stdio.h>
 6 
 7 int main() {
 8     int ch;
 9     FILE *in, *out;            // 指向输入、输出文件的指针
10     // 文件打开失败 
11     if((in=fopen("in.txt", "r"))==NULL || (out=fopen("out.txt", "w"))==NULL) {
12         return;
13     } 
14     ch = fgetc(in);            // 输入一个字符 
15     while(ch != EOF) {
16         fputc(ch, out);        // 写入一个字符 
17         ch = fgetc(in);        // 继续输入 
18     }
19     fclose(in);                // 关闭文件流 
20     fclose(out);
21 
22     return 0;
23 }

 

5. 读取一个字符串

函数定义:char *fgets(char *str, int n, FILE *stream)

函数说明:str 储存输入的字符串,n 表示读取 n-1 个字符,stream 为指向 FILE 对象的指针

返回值:若返回 NULL,则表示没有任何输入。

 

6. 往文件中写格式化数据

函数定义:int fprintf(FILE *stream, const char *format, ...)

函数说明:与 printf 函数差不多,stream 为指向 FILE 对象的指针

返回值:如果成功,则返回写入的字符总数,否则返回一个负数。

 

7. 读取格式化数据

函数定义:int fscanf(FILE *stream, const char *format, ...)

函数说明:与 scanf函数差不多,stream 为指向 FILE 对象的指针

返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。

 

用上面介绍的函数可实现文件的格式化输入和输出,代码如下:

 1 /*
 2     文件操作:文件的格式化输入和输出 
 3 */
 4 
 5 #include <stdio.h>
 6 
 7 int main() {
 8     int id, age;        // 号次、年龄 
 9     char name[10];        // 姓名 
10     FILE *in, *out;        // 指向输入、输出文件的指针
11     // 打开文件失败 
12     if((in=fopen("in.txt", "r"))==NULL || (out=fopen("out.txt", "w"))==NULL) {
13         return;
14     }
15     // 按格式输入 
16     while(fscanf(in, "%d %s %d", &id, name, &age) != EOF) {
17         // 按格式输出 
18         fprintf(out, "id = %04d, name = %s, age = %02d\n", id, name, age);
19     }
20 
21     return 0;
22 }

 

8.  判断文件结束

函数定义:int feof(FILE *stream)

函数说明:stream 为指向 FILE 对象的指针

返回值:当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。

测试代码如下:

 1 /*
 2     文件操作:feof 
 3 */
 4 
 5 #include <stdio.h>
 6 #include <string.h>
 7 #include <math.h>
 8 #include <stdlib.h>
 9 #include <time.h>
10 #include <stdbool.h>
11 
12 int main() {
13     char str[512];
14     FILE* in;
15     // 文件打开失败 
16     if((in=fopen("in.txt", "r")) == NULL) {
17         return;
18     }
19     while(!feof(in)) {
20         fgets(str, 512, in);    // 输入一整行 
21         printf("%s", str);        // 输出 
22     }
23 
24     return 0;
25 }

(责任编辑:dnzg)