C语言fscanf()和fprintf():格式化读写文件(附带实例)
读者已经掌握了 printf() 和 scanf() 函数的用法,两者都是格式化读写函数,本节要介绍的 fprintf() 和 fscanf() 函数,与 printf() 和 scanf() 函数的作用相似,它们主要的区别就是读写的对象不同,fprintf() 和 fscanf() 函数读写的对象不是终端而是文件。
例如:
【实例】使用 fprintf() 函数将数字 88 以字符的形式写到文件中。具体代码如下:
例如:
【实例】先在 E 盘创建一个文件,文件的内容为“abcde”,运行程序,将文件中的 5 个字符以整数形式输出。具体代码如下:
C语言fprintf()函数
fprintf() 函数的一般形式如下:fprintf(文件指针,格式字符串,输出列表);有以下几点说明:
- 文件指针指向由 fopen() 打开的一个文件,这里写文件指针变量。
- 格式字符串也就是输出数据的格式字符串。
- 输出列表就是数据的变量列表。
- 此函数是按格式将输出列表中变量的内容进行转换,并将其输出到文本文件中。如果调用成功,则返回实际被转换并输出的变量个数,否则返回 EOF。
例如:
fprintf(fp,"%d",i);上述代码的作用是将整型变量 i 的值以“%d”的格式输出到 fp 指向的文件中。
【实例】使用 fprintf() 函数将数字 88 以字符的形式写到文件中。具体代码如下:
#define _CRT_SECURE_NO_WARNINGS /*解除vs安全性检测问题*/ #include<stdio.h> #include<process.h> void main() { FILE* fp; /*定义一个指向FILE类型结构体的指针变量*/ int i = 88; char filename[30]; /*定义一个字符型数组*/ printf("please input filename:\n"); scanf("%s", filename); /*输入文件名*/ if ((fp = fopen(filename, "w")) == NULL) /*判断文件是否打开失败*/ { printf("can not open!\n Press any key to continue\n"); getchar(); exit(0); } fprintf(fp, "%c", i); /*将88以字符的形式写入fp所指向的磁盘文件中*/ fclose(fp); /*关闭文件*/ }程序运行过程为:
please input filename:
E:\\demo.txt
C语言fscanf()函数
fscanf() 函数的一般形式如下:fscanf(文件指针,格式字符串,输入列表);有以下几点说明:
- 文件指针指向由 fopen() 打开的一个文件,这里写文件指针变量;
- 格式字符串也就是输出数据的格式字符串;
- 输入列表就是数据的变量地址列表;
- 此函数是在格式字符串的控制下从文件中读取字符,把转换的值赋给相应的各个变量。如果调用成功,则返回实际被转换并输出的变量个数;如果运行到文件末尾或者出错,则返回 EOF。
例如:
fscanf(fp,"%d",&i);上述代码的作用是读入 fp 所指向的文件中的i的值。
【实例】先在 E 盘创建一个文件,文件的内容为“abcde”,运行程序,将文件中的 5 个字符以整数形式输出。具体代码如下:
#define _CRT_SECURE_NO_WARNINGS /*解除vs安全性检测问题*/ #include<stdio.h> #include<process.h> void main() { FILE* fp; /*定义一个指向FILE类型结构体的指针变量*/ char i, j; char filename[30]; /*定义一个字符型数组*/ printf("please input filename:\n"); scanf("%s", filename); /*输入文件名*/ if ((fp = fopen(filename, "r")) == NULL) /*判断文件是否打开失败*/ { printf("can not open!\n Press any key to continue\n"); getchar(); exit(0); } for (i = 0; i < 5; i++) { fscanf(fp, "%c", &j); /*读入fp所指向文件的内容*/ printf("%d is:%5d\n", i + 1, j); } fclose(fp); /*关闭文件*/ }程序运行过程为:
please input filename:
E:\\demo.txt
1 is: 97
2 is: 98
3 is: 99
4 is: 100
5 is: 101