亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C語言輸入輸出

2019-11-11 04:27:56
字體:
來源:轉載
供稿:網友

格式化輸入輸出函數

 Turbo C2.0 標準庫提供了兩個控制臺格式化輸入、 輸出函數PRintf() 和scanf(), 這兩個函數可以在標準輸入輸出設備上以各種不同的格式讀寫數據。printf()函數用來向標準輸出設備(屏幕)寫數據; scanf() 函數用來從標準輸入設備(鍵盤)上讀數據。

printf()函數  

 printf()函數是格式化輸出函數, 一般用于向標準輸出設備按規定格式輸出信息。在編寫程序時經常會用到此函數。printf()函數的調用格式為:printf(“<格式化字符串>”, <參量表>);其中格式化字符串包括兩部分內容: 一部分是正常字符, 這些字符將按原樣輸出,例如printf(“風雨兼程/n”); 另一部分是格式化規定字符, 以”%”開始, 后跟一個或幾個規定字符,用來確定輸出內容格式。參量表是需要輸出的一系列參數, 其個數必須與格式化字符串所說明的輸出參數個數一樣多, 各參數之間用“,”分開, 且順序一一對應, 否則將會出現意想不到的錯誤。

1. 格式化規定符Turbo C2.0提供的格式化規定符如下:━━━━━━━━━━━━━━━━━━━━━━━━━━符號                                     作用——————————————————————————%d                                     十進制有符號整數%u                                     十進制無符號整數%f                                      浮點數%s                                      字符串%c                                      單個字符%p                                      指針的值%e                                      指數形式的浮點數%x, %X                               無符號以十六進制表示的整數%0                                      無符號以八進制表示的整數%g                                       自動選擇合適的表示法━━━━━━━━━━━━━━━━━━━━━━━━━━說明:(1). 可以在“%”和字母之間插進數字表示最大場寬。例如: %9.2f 表示輸出場寬為9的浮點數, 其中小數位為2, 整數位為6,小數點占一位, 不夠9位右對齊。%8s 表示輸出8個字符的字符串, 不夠8個字符右對齊。

(2). 可以控制輸出左對齊或右對齊, 即在“%”和字母之間加入一個”-” 號可說明輸出為左對齊, 否則為右對齊。例如: %-7d 表示輸出7位整數左對齊。如果字符串的長度或整型數位數超過說明的場寬, 將按其實際長度輸出。但對浮點數, 若整數部分位數超過了說明的整數位寬度, 將按實際整數位輸出;若小數部分位數超過了說明的小數位寬度, 則按說明的寬度以四舍五入輸出。另外, 若想在輸出值前加一些0, 就應在場寬項前加個0。例如: d 表示在輸出一個小于4位的數值時, 將在前面補0使其總寬度為4位。如果用浮點數表示字符或整型量的輸出格式, 小數點后的數字代表最大寬度,小數點前的數字代表最小寬度。例如: %6.9s 表示顯示一個長度不小于6且不大于9的字符串。若大于9, 則第9個字符以后的內容將被刪除。(3). 可以在“%”和字母之間加小寫字母l, 表示輸出的是長型數。例如: %ld 表示輸出long整數%lf 表示輸出double浮點數。2. 一些特殊規定字符━━━━━━━━━━━━━━━━━━━━━━━━━━字符                      作用——————————————————————————/n                        換行/f                         清屏并換頁/r                         回車/t                         Tab符/xhh                     表示一個ASCII碼用16進表示,                           其中hh是1到2個16進制數━━━━━━━━━━━━━━━━━━━━━━━━━━

scanf()函數 scanf()函數是格式化輸入函數, 它從標準輸入設備(鍵盤) 讀取輸入的信息。其調用格式為:scanf(“<格式化字符串>”, <地址表>);格式化字符串包括以下三類不同的字符;1. 格式化說明符: 格式化說明符與printf()函數中的格式說明符基本相同。2. 空白字符: 空白字符會使scanf()函數在讀操作中略去輸入中的一個或多個空白字符。3. 非空白字符: 一個非空白字符會使scanf()函數在讀入時剔除掉與這個非空白字符相同的字符。地址表是需要讀入的所有變量的地址, 而不是變量本身。這與printf()函數完全不同, 要特別注意。各個變量的地址之間同“,”分開。

說明:(1). 對于字符串數組或字符串指針變量, 由于數組名和指針變量名本身就是地址, 因此使用scanf()函數時, 不需要在它們前面加上”&”操作符。

(2). 可以在格式化字符串中的“%”各格式化規定符之間加入一個整數, 表示任何讀操作中的最大位數。如例2中若規定只能輸入10字符給字符串指針p, 則第一條scanf() 函數語句變為scanf(“s”, p);程序運行時一旦輸入字符個數大于10, p就不再繼續讀入, 而后面的一個讀入函數即scanf(“%s”, str)就會從第11個字符開始讀入。實際使用scanf()函數時存在一個問題, 下面舉例進行說明:當使用多個scanf()函數連續給多個字符變量輸入時, 

非格式化輸入輸出函數非格式化輸入輸出函數可以由上面講述的標準格式化輸入輸出函數代替, 但這些函數編譯后代碼少, 相對占用內存也小, 從而提高了速度, 同時使用也比較方便。下面分別進行介紹。puts()和gets()函數 puts()函數用來向標準輸出設備(屏幕)寫字符串并換行, 其調用格式為:puts(s);其中s為字符串變量(字符串數組名或字符串指針)。puts()函數的作用與語printf(”%s/n”, s)相同。例3:main(){  char s[20], *f;  strcpy(s, “Hello! Turbo C2.0″);  f=“Thank you”;  puts(s);  puts(f);}

說明:(1). puts()函數只能輸出字符串, 不能輸出數值或進行格式變換。(2). 可以將字符串直接寫入puts()函數中。如:puts(“Hello, Turbo C2.0”);

2. gets()函數gets()函數用來從標準輸入設備(鍵盤)讀取字符串直到回車結束, 但回車符不屬于這個字符串。其調用格式為:gets(s);其中s為字符串變量(字符串數組名或字符串指針)。gets(s)函數與scanf(“%s”, &s)相似, 但不完全相同, 使用scanf(“%s”,&s)函數輸入字符串時存在一個問題, 就是如果輸入了空格會認為輸入字符串結束,空格后的字符將作為下一個輸入項處理, 但gets() 函數將接收輸入的整個字符串直到回車為止。例4main(){  char s[20], *f;  printf(“What’s your name?/n”);  gets(s);  puts(s);  puts(“How old are you?”);  gets(f);  puts(f);}

說明:(1). puts()函數只能輸出字符串, 不能輸出數值或進行格式變換。(2). 可以將字符串直接寫入puts()函數中。如:puts("Hello, Turbo C2.0");

2. gets()函數

gets()函數用來從標準輸入設備(鍵盤)讀取字符串直到回車結束, 但回車符不屬于這個字符串。其調用格式為:gets(s);其中s為字符串變量(字符串數組名或字符串指針)。 gets(s)函數與scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s",&s)函數輸入字符串時存在一個問題, 就是如果輸入了空格會認為輸入字符串結束,空格后的字符將作為下一個輸入項處理, 但gets() 函數將接收輸入的整個字符串直到回車為止。

例5

main()

{

         char s[20], *f;

         printf("What's your name?/n");

         gets(s);                      /*等待輸入字符串直到回車結束*/

         puts(s);                      /*將輸入的字符串輸出*/

         puts("How old are you?");

         gets(f);

         puts(f);

 }

 說明:(1). gets(s)函數中的變量s為一字符串。如果為單個字符, 編譯連接不會有錯誤, 但運行后會出現"Null pointer asignmemt"的錯誤。

putchar()、getch()、getche()和getchar()函數

putchar()函數

 putchar()函數是向標準輸出設備輸出一個字符, 其調用格式為:putchar(ch);其中ch為一個字符變量或常量。putchar()函數的作用等同于printf("%c", ch);

 例6:

#include<stdio.h>

main()

    {

         char c:             /*定義字符變量*/

         c='B';              /*給字符變量賦值*/

         putchar(c);         /*輸出該字符*/

         putchar('/x42');    /*輸出字母B*/

         putchar(0x42);      /*直接用ASCII碼值輸出字母B*/

 }

從本例中的連續四個字符輸出函數語句可以分清字符變量的不同賦值方法。

getch()和getche()函數  

  這兩個函數都是從鍵盤上讀入一個字符。其調用格式為:getch(); getche();兩者的區別是:getch()函數不將讀入的字符回顯在顯示屏幕上, 而getche()函數卻將讀入的字符回顯到顯示屏幕上。

 例7:

#include<stdio.h>

main()

{

         char c, ch;

         c=getch();     /*從鍵盤上讀入一個字符不回顯送給字符變量c*/

         putchar(c);    /*輸出該字符*/

         ch=getche();   /*從鍵盤上帶回顯的讀入一個字符送給字符變量ch*/

         putchar(ch);

}

利用回顯和不回顯的特點, 這兩個函數經常用于交互輸入的過程中完成暫停等功能。

例8:

#include<stdio.h>

main()

{

         char c, s[20];

         printf("Name:");

         gets(s);

         printf("Press any key to confinue...");

         getch(); /*等待輸入任一鍵*/

}

getchar()函數

  getchar()函數也是從鍵盤上讀入一個字符, 并帶回顯。它與前面兩個函數的區別在于: getchar()函數等待輸入直到按回車才結束, 回車前的所有輸入字符都會逐個顯示在屏幕上。但只有第一個字符作為函數的返回值。getchar()函數的調用格式為:getchar();

例9:

#include<stdio.h>

main()

{

         char c;

         c=getchar();   /*從鍵盤讀入字符直到回車結束*/

         putchar(c);    /*顯示輸入的第一個字符*/

         getch();       /*等待按任一健*/

 }

有關文件操作的函數

文件的順序寫函數

fprintf()、fputs()和fputc()函數函數fprintf()、fputs()和fputc()均為文件的順序寫操作函數,其調用格式如下:int fprintf(FILE *stream, char *format, <variable-list>);int fputs(char *string, FILE *steam);int fputc(int ch, FILE *steam);

上述三個函數的返回值均為整型量。fprintf() 函數的返回值為實際寫入文件中的字罕個數(字節數)。如果寫錯誤, 則返回一個負數, fputs()函數返回0時表明將string指針所指的字符串寫入文件中的操作成功, 返回非0時, 表明寫操作失敗。fputc()函數返回一個向文件所寫字符的值, 此時寫操作成功, 否則返回EOF(文件結束結束其值為-1, 在stdio.h中定義)表示寫操作錯誤。fprintf( ) 函數中格式化的規定與printf( ) 函數相同,   所不同的只是fprintf()函數是向文件中寫入。而printf()是向屏幕輸出。

下面介紹一個例子, 運行后產后一個test.dat的文件。

例11:

#include<stdio.h>

 main()

{

         char *s="That's goodnews"); /*定義字符串指針并初始化*/

         int i=617;                    /*定義整型變量并初始化*/

         FILE *fp;                     /*定義文件指針*/

         fp=fopne("test.dat", "w");    /*建立一個文字文件只寫*/

         fputs("Your score of TOEFLis", fp);/*向所建文件寫入一串字符*/

         fputc(':', fp);               /*向所建文件寫冒號:*/

         fprintf(fp, "%d/n", i);      /*向所建文件寫一整型數*/

         fprintf(fp, "%s", s);        /*向所建文件寫一字符串*/

         fclose(fp);                   /*關閉文件*/

}

用DOS的TYPE命令顯示TEST.DAT的內容如下所示:屏幕顯示

     Your score of TOEFL is: 617

     That's good news、

fprintf()#include <stdio.h> int fprintf( FILE *stream, const char *format, ... );fprintf()函數根據指定的format(格式)發送信息(參數)到由stream(流)指定的文件.因此fprintf()可以使得信息輸出到指定的文件.比如    char name[20] = "Mary";    FILE *out;    out = fopen( "output.txt", "w" );    if( out != NULL )    fprintf( out, "Hello %s/n", name );對于其輸出格式參數,和printf()一樣.fprintf()和printf()一樣工作. fprintf()的返回值是輸出的字符數,發生錯誤時返回一個負值.在有些地方,有這樣的定義:printf(...)=fprintf(stdout,...).

fprintf是用于文件操作的,原型是int fprintf( FILE *stream, const char *format [, argument ]...);

舉例用法:

[cpp] view plai copy#include <stdio.h>  #include <process.h>    FILE *stream;    void main( void )  {  int i = 10;  double fp = 1.5;  char s[] = "this is a string";  char c = '/n';    stream = fopen( "fprintf.out", "w" );  fprintf( stream, "%s%c", s, c );    fprintf( stream, "%d/n", i );  fprintf( stream, "%f/n", fp );  fclose( stream );  system( "type fprintf.out" );  }   

屏幕輸出:

this is a string101.500000

printf就是在屏幕打印出一段字符串來啊原型是int printf( const char *format [, argument]... );是標準輸出。

3:printf、sprintf與fprintf 的用法區分

1.printf 是和標準輸出文件(stdout)關聯的,fprintf 則沒有這個限制. 2.fprintf是用于文件操作的,原型是int fprintf( FILE *stream, const char *format [, argument ]...);

3.sprintf是格式化輸出到一個字符串,fprintf是格式化輸出到一個stream,通常是到文件。 int  fprintf(FILE *stream,const char *format[ ,argument]...);  int  sprintf(char *buffer,const char *format[,argument] ...);

 

分析以下的程序:

[cpp] view plain copy#include<stdio.h>  #include<stdlib.h>  #include<iostream.h>  int main()   {       //聲明變量      char ch;      char str[20];      int n;      float x;        //用stdin從鍵盤上輸入數據      fprintf(stdout,"ch str/n");      fscanf(stdin,"%c %s",&ch,str);      fprintf(stdout,"n    x /n");      fscanf(stdin,"%d  %f",&n,&x);      cout<<"----------------"<<endl;        //輸出顯示      fprintf(stdout,"ch=%c str=%s",ch,str);      fprintf(stdout,"/nn=%d x=%f",n,x);      cout<<endl;  }  

 

這個程序是讓你認識到區分數據類型輸入的。fscanf(stdin,"%c %s",&ch,str);是讓你輸入一個字符和一個字符串。如果你只輸入一個字符串那么程序就會自動截取第一個字母為字符,而輸出。fscanf(stdin,"%d %f",&n,&x);是讓你輸入一個整形和一個浮點數。最后輸出。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
777午夜精品福利在线观看| 日本一欧美一欧美一亚洲视频| 亚洲激情在线观看视频免费| 欧美成人中文字幕| 欧美大胆在线视频| 精品一区精品二区| 欧美激情一二三| 8x海外华人永久免费日韩内陆视频| 精品视频在线观看日韩| 欧美一级淫片播放口| 成人黄色激情网| 亚洲第一精品夜夜躁人人爽| 欧美在线影院在线视频| 日韩av在线网页| 国产精品久久在线观看| 亚洲在线观看视频| 成人日韩av在线| 91国产中文字幕| 久久99热精品这里久久精品| 日韩免费中文字幕| 成人美女av在线直播| 欧美视频二区36p| 日韩精品免费在线播放| 国产精品观看在线亚洲人成网| 久久久噜噜噜久久久| 欧美中文字幕在线| 国产亚洲精品激情久久| 欧美另类极品videosbestfree| 久久久国产精品视频| 欧美在线免费看| 欧美刺激性大交免费视频| 91av在线免费观看视频| 美女久久久久久久久久久| 国产综合福利在线| 国产成人一区二区三区小说| 久久av资源网站| 国产精品激情av电影在线观看| 国产欧美精品日韩精品| 亚洲第一av网站| 欧美激情视频一区二区| 久久久久久久91| 日韩一区二区三区在线播放| 国产精品一区二区av影院萌芽| 国产精品视频色| 精品欧美国产一区二区三区| 91午夜在线播放| 尤物yw午夜国产精品视频明星| 日韩国产精品亚洲а∨天堂免| 欧美与黑人午夜性猛交久久久| xvideos国产精品| 日韩中文在线中文网三级| 久久久亚洲影院| 欧美日韩国产精品一区| 亚洲欧美日韩高清| 国产一区视频在线播放| 国产99久久精品一区二区永久免费| 久久久99久久精品女同性| 成人国产精品一区二区| 尤物99国产成人精品视频| 第一福利永久视频精品| 一区二区三区亚洲| 日本高清+成人网在线观看| 欧美精品成人91久久久久久久| 成人免费高清完整版在线观看| 欧美精品久久久久久久免费观看| 亚洲性日韩精品一区二区| 91亚洲精品视频| 亚洲国产成人精品女人久久久| 欧美大全免费观看电视剧大泉洋| 亚洲丝袜av一区| 欧美一乱一性一交一视频| 国产热re99久久6国产精品| 国产美女久久精品香蕉69| 最近更新的2019中文字幕| 国模叶桐国产精品一区| 精品日韩美女的视频高清| 韩曰欧美视频免费观看| 成人动漫网站在线观看| 色综合伊人色综合网| 欧美视频免费在线| 亚洲xxxx18| 欧美老少做受xxxx高潮| 国产成人在线精品| 亚洲精品v天堂中文字幕| 91大神福利视频在线| 久久伊人精品天天| 成人xvideos免费视频| 欧美大片在线看| 欧美在线欧美在线| 欧美中文字幕视频| 日韩欧美在线国产| 国产精品一区二区三区毛片淫片| 一道本无吗dⅴd在线播放一区| 日韩视频在线免费观看| 亚洲国产精彩中文乱码av在线播放| 国产一区二区欧美日韩| 日韩成人中文字幕在线观看| 亚洲一区久久久| 日韩电影视频免费| 怡红院精品视频| 欧美野外猛男的大粗鳮| 国产精品美女免费视频| 成人网在线视频| 亚洲精品自拍偷拍| 午夜免费在线观看精品视频| 欧美性资源免费| 韩国19禁主播vip福利视频| 91色琪琪电影亚洲精品久久| 欧美在线国产精品| 日韩精品免费在线| 激情亚洲一区二区三区四区| 亚洲精品在线不卡| 亚洲国产一区二区三区四区| 中文国产成人精品| 久久久免费在线观看| 国语自产精品视频在线看| 亚洲第一网站免费视频| 国产精品中文字幕久久久| 日韩成人激情影院| 国产成人精品av在线| 久久精品91久久香蕉加勒比| 亚洲一区999| 97久久久久久| 国产精品久久网| 91人人爽人人爽人人精88v| 2019中文字幕在线| 亚洲色图在线观看| 国产欧美日韩亚洲精品| 国产成人av网| 欧美专区第一页| 97精品一区二区视频在线观看| 国产在线精品播放| 亚洲视频国产视频| 亚洲美女www午夜| 久久99热精品这里久久精品| 亚洲无线码在线一区观看| 欧美精品www| 亚洲午夜av电影| 97超级碰碰人国产在线观看| 亚洲女人天堂网| 国产精品自产拍在线观看| 日本欧美黄网站| 中文字幕视频一区二区在线有码| 欧美激情精品久久久久久| 国产福利精品视频| 欧美三级xxx| 成人美女av在线直播| 成人免费网视频| 狠狠做深爱婷婷久久综合一区| 欧美午夜无遮挡| 日韩中文有码在线视频| 亚洲成人久久久| 欧美精品一区二区三区国产精品| 日韩精品中文字幕在线| 亚洲精品免费在线视频| 亚洲自拍另类欧美丝袜| 最近2019中文字幕第三页视频| xxx一区二区| 日韩欧美a级成人黄色| 57pao成人永久免费视频| 久久亚洲精品毛片| 久久久91精品国产| 97超级碰碰人国产在线观看| 中文字幕在线看视频国产欧美|