c 语言的输出

printf是标准输出流的输出函数,用来向屏幕这样的标准输出设备输出,而fprintf则是向文件输出,
将输出的内容输出到硬盘上的文件或是相当于文件的设备上
  printf是有缓冲的输出,fprintf没有缓冲
  fprintf()传送输出到一个流中的函数
  原形:int fprintf(FILE *stream,const char *format[,argument,...])
  功能 <javascript:void(0)>:①向文件指针指向的文件输出ASCⅡ代码
  ②向显示器输出错误信息 <javascript:void(0)>
  使用形式:
  ①fprintf(文件指针,"输出格式",输出项系列);
  ②fprintf(stderr,"错误信息");
  使用实例:fprintf(stream,"%d %c %f",i,c,f);
  其中定义FILE *stream;
  int i; char c; float f;
  返回值:成功则返回输出的字节数,错误则返回EOF。
  头文件:stdio.h
  ===================================================
  sprintf()格式化输出到数组的函数
  原形∶int sprintf(buf,format,arg_list)
  其中char *buf;
  功能∶把arg_list参量的值按format的格式输出到buf中。
例∶sprintf(buffer,"相对扇区号∶%s(其中∶柱面号为%d/磁头号为%d/扇区号为%d)",string,cyls,head,sector);
  其中char buffer[100];
  char *string="  ";
  int cyls,head,sector;
  返回值∶实际写入数组的字符个数。
  头文件∶stdio.h
  sprintf 是个变参函数,定义如下:
  int sprintf(char *buffer,const char *format [, argument] ... );
  除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:
  格式化字符串上。
  printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的
  格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终
  函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。
  格式化数字字符串
  sprintf 最常见的应用之一莫过于把整数打印到字符串中....
  格式化读写函数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);
  }
原文地址:https://www.cnblogs.com/xmphoenix/p/2002207.html