⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fscanf.txt

📁 字符串读写函数fgets和fputs
💻 TXT
字号:
 格式化读写函数fscanf和fprintf 

   fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。 两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列); 例如: 

   fscanf(fp,"%d%s",&i,s); 
   fprintf(fp,"%d%c",j,ch); 

   用fscanf和fprintf函数也可以完成例10.6的问题。修改后的程序如例10.7所示。 

   [例10.7] 

#include<stdio.h> 
struct stu 
{ 
char name[10]; 
int num; 
int age; 
char addr[15]; 
}boya[2],boyb[2],*pp,*qq; 
main() 
{ 
FILE *fp; 
char ch; 
int i; 
pp=boya; 
qq=boyb; 
if((fp=fopen("stu_list","wb+"))==NULL) 
{ 
printf("Cannot open file strike any key exit!"); 
getch(); 
exit(1); 
} 
printf("\ninput data\n"); 
for(i=0;i<2;i++,pp++) 
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr); 
pp=boya; 
for(i=0;i<2;i++,pp++) 
fprintf(fp,"%s %d %d %s\n",pp->name,pp->num,pp->age,pp-> 
addr); 
rewind(fp); 
for(i=0;i<2;i++,qq++) 
fscanf(fp,"%s %d %d %s\n",qq->name,&qq->num,&qq->age,qq->addr); 
printf("\n\nname\tnumber age addr\n"); 
qq=boyb; 
for(i=0;i<2;i++,qq++) 
printf("%s\t%5d %7d %s\n",qq->name,qq->num, qq->age, 
qq->addr); 
fclose(fp); 
} 

   与例10.6相比,本程序中fscanf和fprintf函数每次只能读写一个结构数组元素,因此采用了循环语句来读写全部数组元素。 还要注意指针变量pp,qq由于循环改变了它们的值,因此在程序的25和32行分别对它们重新赋予了数组的首地址。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -