c 語言的輸出

來源:互聯網
上載者:User
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);  }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.