C 语⾔fscanf 和fprintf 函数的⽤法详解
fscanf() 和 fprintf() 函数与前⾯使⽤的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显⽰器,⽽是磁盘⽂件。
这两个函数的原型为:
fp 为⽂件指针,format 为格式控制字符串,… 表⽰参数列表。与 scanf() 和 printf() 相⽐,它们仅仅多了⼀个 fp 参数。例如:
fprintf() 返回成功写⼊的字符的个数,失败则返回负数。fscanf() 返回参数列表中被成功赋值的参数个数。⽰例 ⽤ fscanf 和 fprintf 函数来完成对学⽣信息的读写。int
fscanf ( FILE *fp , char  * format , ... );
int  fprintf ( FILE *fp , char  * format , ... );
FILE *fp ;
int  i , j ;
char  *str , ch ;
fscanf (fp , "%d %s", &i , str );
fprintf (fp ,"%d %c", j , ch );
运⾏结果:
打开 D:\,发现⽂件的内容是可以阅读的,格式⾮常清晰。⽤ fprintf() 和 fscanf() 函数读写配置⽂件、⽇志⽂件会⾮常⽅便,不但程序能够识别,⽤户也可以看懂,可以⼿动修改。
如果将 fp 设置为 stdin,那么 fscanf() 函数将会从键盘读取数据,与 scanf 的作⽤相同;设置为 stdout,那么 fprintf() 函数将会向显⽰器输出内容,与 printf 的作⽤相同。例如:
#define  N 2
struct  stu {
char  name [10];
int  num ;
int  age ;
float  score ;
} boya [N ],
boyb [N ], *pa , *pb ;
int  main (){
FILE *fp ;
int  i ;
pa =boya ;
pb =boyb ;
if ( (fp =fopen ("D:\\","wt+")) == NULL  ){
puts ("Fail to open file!");
exit (0);
}
//从键盘读⼊数据,保存到boya
printf ("Input data:\n");
for (i =0; i <N ; i ++,pa ++){
scanf ("%s %d %d %f", pa ->name , &pa ->num , &pa ->age , &pa ->score );
}
pa = boya ;
//将boya 中的数据写⼊到⽂件
for (i =0; i <N ; i ++,pa ++){
fprintf (fp ,"%s %d %d %f\n", pa ->name , pa ->num , pa ->age , pa ->score );
}
//重置⽂件指针
rewind (fp );
//从⽂件中读取数据,保存到boyb
for (i =0; i <N ; i ++,pb ++){
fscanf (fp , "%s %d %d %f\n", pb ->name , &pb ->num , &pb ->age , &pb ->score );fprintf格式
}
pb =boyb ;
//将boyb 中的数据输出到显⽰器
for (i =0; i <N ; 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
运⾏结果:
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↙
sum =30

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。