麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

C語(yǔ)言輸入輸出

2019-11-11 05:06:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

格式化輸入輸出函數(shù)

 Turbo C2.0 標(biāo)準(zhǔn)庫(kù)提供了兩個(gè)控制臺(tái)格式化輸入、 輸出函數(shù)PRintf() 和scanf(), 這兩個(gè)函數(shù)可以在標(biāo)準(zhǔn)輸入輸出設(shè)備上以各種不同的格式讀寫數(shù)據(jù)。printf()函數(shù)用來(lái)向標(biāo)準(zhǔn)輸出設(shè)備(屏幕)寫數(shù)據(jù); scanf() 函數(shù)用來(lái)從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)上讀數(shù)據(jù)。

printf()函數(shù)  

 printf()函數(shù)是格式化輸出函數(shù), 一般用于向標(biāo)準(zhǔn)輸出設(shè)備按規(guī)定格式輸出信息。在編寫程序時(shí)經(jīng)常會(huì)用到此函數(shù)。printf()函數(shù)的調(diào)用格式為:printf(“<格式化字符串>”, <參量表>);其中格式化字符串包括兩部分內(nèi)容: 一部分是正常字符, 這些字符將按原樣輸出,例如printf(“風(fēng)雨兼程/n”); 另一部分是格式化規(guī)定字符, 以”%”開(kāi)始, 后跟一個(gè)或幾個(gè)規(guī)定字符,用來(lái)確定輸出內(nèi)容格式。參量表是需要輸出的一系列參數(shù), 其個(gè)數(shù)必須與格式化字符串所說(shuō)明的輸出參數(shù)個(gè)數(shù)一樣多, 各參數(shù)之間用“,”分開(kāi), 且順序一一對(duì)應(yīng), 否則將會(huì)出現(xiàn)意想不到的錯(cuò)誤。

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

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

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

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

(2). 可以在格式化字符串中的“%”各格式化規(guī)定符之間加入一個(gè)整數(shù), 表示任何讀操作中的最大位數(shù)。如例2中若規(guī)定只能輸入10字符給字符串指針p, 則第一條scanf() 函數(shù)語(yǔ)句變?yōu)閟canf(“s”, p);程序運(yùn)行時(shí)一旦輸入字符個(gè)數(shù)大于10, p就不再繼續(xù)讀入, 而后面的一個(gè)讀入函數(shù)即scanf(“%s”, str)就會(huì)從第11個(gè)字符開(kāi)始讀入。實(shí)際使用scanf()函數(shù)時(shí)存在一個(gè)問(wèn)題, 下面舉例進(jìn)行說(shuō)明:當(dāng)使用多個(gè)scanf()函數(shù)連續(xù)給多個(gè)字符變量輸入時(shí), 

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

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

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

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

2. gets()函數(shù)

gets()函數(shù)用來(lái)從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取字符串直到回車結(jié)束, 但回車符不屬于這個(gè)字符串。其調(diào)用格式為:gets(s);其中s為字符串變量(字符串?dāng)?shù)組名或字符串指針)。 gets(s)函數(shù)與scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s",&s)函數(shù)輸入字符串時(shí)存在一個(gè)問(wèn)題, 就是如果輸入了空格會(huì)認(rèn)為輸入字符串結(jié)束,空格后的字符將作為下一個(gè)輸入項(xiàng)處理, 但gets() 函數(shù)將接收輸入的整個(gè)字符串直到回車為止。

例5

main()

{

         char s[20], *f;

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

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

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

         puts("How old are you?");

         gets(f);

         puts(f);

 }

 說(shuō)明:(1). gets(s)函數(shù)中的變量s為一字符串。如果為單個(gè)字符, 編譯連接不會(huì)有錯(cuò)誤, 但運(yùn)行后會(huì)出現(xiàn)"Null pointer asignmemt"的錯(cuò)誤。

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

putchar()函數(shù)

 putchar()函數(shù)是向標(biāo)準(zhǔn)輸出設(shè)備輸出一個(gè)字符, 其調(diào)用格式為:putchar(ch);其中ch為一個(gè)字符變量或常量。putchar()函數(shù)的作用等同于printf("%c", ch);

 例6:

#include<stdio.h>

main()

    {

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

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

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

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

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

 }

從本例中的連續(xù)四個(gè)字符輸出函數(shù)語(yǔ)句可以分清字符變量的不同賦值方法。

getch()和getche()函數(shù)  

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

 例7:

#include<stdio.h>

main()

{

         char c, ch;

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

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

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

         putchar(ch);

}

利用回顯和不回顯的特點(diǎn), 這兩個(gè)函數(shù)經(jīng)常用于交互輸入的過(guò)程中完成暫停等功能。

例8:

#include<stdio.h>

main()

{

         char c, s[20];

         printf("Name:");

         gets(s);

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

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

}

getchar()函數(shù)

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

例9:

#include<stdio.h>

main()

{

         char c;

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

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

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

 }

有關(guān)文件操作的函數(shù)

文件的順序?qū)懞瘮?shù)

fprintf()、fputs()和fputc()函數(shù)函數(shù)fprintf()、fputs()和fputc()均為文件的順序?qū)懖僮骱瘮?shù),其調(diào)用格式如下:int fprintf(FILE *stream, char *format, <variable-list>);int fputs(char *string, FILE *steam);int fputc(int ch, FILE *steam);

上述三個(gè)函數(shù)的返回值均為整型量。fprintf() 函數(shù)的返回值為實(shí)際寫入文件中的字罕個(gè)數(shù)(字節(jié)數(shù))。如果寫錯(cuò)誤, 則返回一個(gè)負(fù)數(shù), fputs()函數(shù)返回0時(shí)表明將string指針?biāo)傅淖址畬懭胛募械牟僮鞒晒? 返回非0時(shí), 表明寫操作失敗。fputc()函數(shù)返回一個(gè)向文件所寫字符的值, 此時(shí)寫操作成功, 否則返回EOF(文件結(jié)束結(jié)束其值為-1, 在stdio.h中定義)表示寫操作錯(cuò)誤。fprintf( ) 函數(shù)中格式化的規(guī)定與printf( ) 函數(shù)相同,   所不同的只是fprintf()函數(shù)是向文件中寫入。而printf()是向屏幕輸出。

下面介紹一個(gè)例子, 運(yùn)行后產(chǎn)后一個(gè)test.dat的文件。

例11:

#include<stdio.h>

 main()

{

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

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

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

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

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

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

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

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

         fclose(fp);                   /*關(guān)閉文件*/

}

用DOS的TYPE命令顯示TEST.DAT的內(nèi)容如下所示:屏幕顯示

     Your score of TOEFL is: 617

     That's good news、

fprintf()#include <stdio.h> int fprintf( FILE *stream, const char *format, ... );fprintf()函數(shù)根據(jù)指定的format(格式)發(fā)送信息(參數(shù))到由stream(流)指定的文件.因此fprintf()可以使得信息輸出到指定的文件.比如    char name[20] = "Mary";    FILE *out;    out = fopen( "output.txt", "w" );    if( out != NULL )    fprintf( out, "Hello %s/n", name );對(duì)于其輸出格式參數(shù),和printf()一樣.fprintf()和printf()一樣工作. fprintf()的返回值是輸出的字符數(shù),發(fā)生錯(cuò)誤時(shí)返回一個(gè)負(fù)值.在有些地方,有這樣的定義: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就是在屏幕打印出一段字符串來(lái)啊原型是int printf( const char *format [, argument]... );是標(biāo)準(zhǔn)輸出。

3:printf、sprintf與fprintf 的用法區(qū)分

1.printf 是和標(biāo)準(zhǔn)輸出文件(stdout)關(guān)聯(lián)的,fprintf 則沒(méi)有這個(gè)限制. 2.fprintf是用于文件操作的,原型是int fprintf( FILE *stream, const char *format [, argument ]...);

3.sprintf是格式化輸出到一個(gè)字符串,fprintf是格式化輸出到一個(gè)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從鍵盤上輸入數(shù)據(jù)      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;  }  

 

這個(gè)程序是讓你認(rèn)識(shí)到區(qū)分?jǐn)?shù)據(jù)類型輸入的。fscanf(stdin,"%c %s",&ch,str);是讓你輸入一個(gè)字符和一個(gè)字符串。如果你只輸入一個(gè)字符串那么程序就會(huì)自動(dòng)截取第一個(gè)字母為字符,而輸出。fscanf(stdin,"%d %f",&n,&x);是讓你輸入一個(gè)整形和一個(gè)浮點(diǎn)數(shù)。最后輸出。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久精品视频在线观看 | 日韩视频一二三 | 久草在线视频中文 | 9丨九色丨国产 | 久色免费 | 久久久久久久久久久久久久av | 久久成人福利 | 72pao成人国产永久免费视频 | 香蕉久久久久久 | 精品国产一区二区三区久久久蜜 | 逼特逼视频在线观看 | 国产成人免费精品 | 午夜免费网 | 国产精品免费麻豆入口 | 国产精品久久久久久久久久久天堂 | 免费黄色大片网站 | 国产资源在线免费观看 | 日日草日日干 | 亚洲视频在线一区二区 | 国产一区视频观看 | 欧美顶级毛片在线播放小说 | 免费中文视频 | 久久精品首页 | 欧美91看片特黄aaaa | 欧美成人精品不卡视频在线观看 | av成人免费看 | 亚洲不卡 | 久久精品观看 | 国产精品久久久久久久久久久久久久久久 | 91短视频在线免费观看 | 欧美片a| 黄色三级网站 | 久热久操 | 亚洲精品 在线播放 | 男女做性免费网站 | 亚洲午夜一区二区三区 | 综合在线一区 | 久草干 | 性欧美在线视频 | 一级毛片在线免费观看 | 91精品国产777在线观看 |