桥梁建设工程网站,做dnf辅助官方网站,自己怎么做关键词优化,免费素材图库下载fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似#xff0c;都是格式化读写函数#xff0c;两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器#xff0c;而是磁盘文件。
这两个函数的原型为#xff1a;
int fscanf ( FILE *fp, c…fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似都是格式化读写函数两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器而是磁盘文件。
这两个函数的原型为
int fscanf ( FILE *fp, char * format, ... );
int fprintf ( FILE *fp, char * format, ... );fp 为文件指针format 为格式控制字符串… 表示参数列表。与 scanf() 和 printf() 相比它们仅仅多了一个 fp 参数。例如
FILE *fp;
int i, j;
char *str, ch;
fscanf(fp, %d %s, i, str);
fprintf(fp,%d %c, j, ch);fprintf() 返回成功写入的字符的个数失败则返回负数。fscanf() 返回参数列表中被成功赋值的参数个数。
示例 用 fscanf 和 fprintf 函数来完成对学生信息的读写。
#includestdio.h#define N 2struct stu{char name[10];int num;int age;float score;
} boya[N], boyb[N], *pa, *pb;int main(){FILE *fp;int i;paboya;pbboyb;if( (fpfopen(D:\\demo.txt,wt)) NULL ){puts(Fail to open file!);exit(0);}//从键盘读入数据保存到boyaprintf(Input data:\n);for(i0; iN; i,pa){scanf(%s %d %d %f, pa-name, pa-num, pa-age, pa-score); }pa boya;//将boya中的数据写入到文件for(i0; iN; i,pa){fprintf(fp,%s %d %d %f\n, pa-name, pa-num, pa-age, pa-score); }//重置文件指针rewind(fp);//从文件中读取数据保存到boybfor(i0; iN; i,pb){fscanf(fp, %s %d %d %f\n, pb-name, pb-num, pb-age, pb-score);}pbboyb;//将boyb中的数据输出到显示器for(i0; iN; i,pb){printf(%s %d %d %f\n, pb-name, pb-num, pb-age, pb-score);}fclose(fp);return 0;
}运行结果
Input data:
Tom 2 15 90.5↙
Li 1 14 99↙
Tom 2 15 90.500000
Li 1 14 99.000000打开 D:\demo.txt发现文件的内容是可以阅读的格式非常清晰。用 fprintf() 和 fscanf() 函数读写配置文件、日志文件会非常方便不但程序能够识别用户也可以看懂可以手动修改。
如果将 fp 设置为 stdin那么 fscanf() 函数将会从键盘读取数据与 scanf 的作用相同设置为 stdout那么 fprintf() 函数将会向显示器输出内容与 printf 的作用相同。例如
#includestdio.h
int main(){int a, b, sum;fprintf(stdout, Input two numbers: );fscanf(stdin, %d %d, a, b);sum a b;fprintf(stdout, sum%d\n, sum);return 0;
}运行结果
Input two numbers: 10 20↙
sum30