日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

基本的输入输出函数介绍

發(fā)布時(shí)間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基本的输入输出函数介绍 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

聲明:以下內(nèi)容,在linux系統(tǒng)下操作的,編譯器為gcc.

?

scanf()函數(shù):

當(dāng)控制字符為 %c 時(shí),它會(huì)讀入你輸入的空格、回車(chē)等鍵的;

當(dāng)用%d 時(shí):默認(rèn)分隔符(分隔也是結(jié)束的標(biāo)志嘛)是所有的 white-spaces(空格、回車(chē)、制表);

???? 注意:1. 輸入時(shí),應(yīng)該用空格或著 制表符分開(kāi),不能用;或,哦;

???????????? 2. 如果要用的話,你的輸入應(yīng)該與? scanf函數(shù)中的控制串能對(duì)應(yīng)起來(lái)。否則的話,它就只會(huì)讀入一部分正確的,然后退出。

?????????????? 比如: scanf(“%d, %d”,&a, &b);,? 當(dāng)我們輸入時(shí),也應(yīng)該是這樣的,如:23,45;如果輸入為23 45 的話,那么它只會(huì)正確讀入 a=23,然后就停止了,即正確讀入了一個(gè)數(shù);

???????????? 3. 或著:scanf("%d%*c%d",&x,&y), %*表示讀取指定類型的數(shù)據(jù)c(表示字符)但是不保存。這樣的話,就可以用你想用的字符進(jìn)行分隔了;

當(dāng)控制符為 %s 時(shí),默認(rèn)分隔符(分隔也是結(jié)束的標(biāo)志嘛)是所有的 white-spaces,輸入后自動(dòng)加入結(jié)束符"\0"。

?

補(bǔ)充:

1. 數(shù)對(duì)于 scanf()函數(shù),它的讀入問(wèn)題就要涉及到了緩沖區(qū)了。scanf函數(shù)是以刪除的方式從緩沖區(qū)讀取數(shù)據(jù)(緩沖區(qū)中存儲(chǔ)來(lái)自標(biāo)準(zhǔn)輸入的數(shù)據(jù))。如果緩沖區(qū)是空的,就阻塞之,等待從鍵盤(pán)輸入;并且scanf還能對(duì)數(shù)字輸入忽略先導(dǎo)的空白符,如\n\t和空格等(注意,對(duì)字符輸入并不忽略先導(dǎo)字符,這個(gè)也是很自然的道理,因?yàn)閈n\t和空格在字符中都是合法的字符)。

2. scanf() 是有返回值的,它的返回值為正確讀入的變量的數(shù)目;

?

getchar()函數(shù):

經(jīng)過(guò)我的實(shí)現(xiàn),我的結(jié)論為:getchar()函數(shù)從緩沖區(qū)讀取一個(gè)字符,它什么時(shí)候讀取呢,只要緩沖區(qū)里進(jìn)入回車(chē)(有的系統(tǒng)換行,反正吧我的linux下為換行)以后它就會(huì)讀取。它的返回值為什么呢?為讀取字符的 ASCII的值;下面是我實(shí)現(xiàn)程序:

// 源碼: 1 #include<stdio.h>2 int main() {3 int a;4 printf("hello,world\n");5 scanf("%d", &a);6 printf("%d\n",a);7 printf("%d\n", getchar());8 printf("%d\n", getchar());9 printf("%d\n", getchar());10 printf("%d\n", getchar());11 printf("%d\n", getchar()); 12 printf("i am \n");13 printf("hello,world\n");14 printf("hello,world\n");15 printf("hello,world\n");16 17 return 0;18 }//輸出: hello,world 24 //阻塞中,然后輸入24; 24 10 //這個(gè)10吧,對(duì)應(yīng)在linux下的換行的ASCII的值; a //阻塞中,然后輸入a; 97 10 b //阻塞中,然后輸入b; 98 10 i am hello,world hello,world hello,world

?

還一一個(gè)getch函數(shù),它吧,不在C標(biāo)準(zhǔn)庫(kù)中,我們其實(shí)用getchar()就可以了吧。

?

gets()與fgets()函數(shù):

對(duì)于gets()函數(shù),gcc下直接沒(méi)法用,因?yàn)樗话踩?#xff0c;可以導(dǎo)致程序崩潰,改用fgets()函數(shù);

頭文件:include<stdio.h>
fgets()函數(shù)用于從文件流中讀取一行或指定個(gè)數(shù)的字符,其原型為:
??? char * fgets(char * string, int size, FILE * stream);
參數(shù)說(shuō)明:

  • string為一個(gè)字符數(shù)組,用來(lái)保存讀取到的字符。
  • size為要讀取的字符的個(gè)數(shù)。如果該行字符數(shù)大于size-1,則讀到 size-1 個(gè)字符時(shí)結(jié)束,并在最后補(bǔ)充' \0';如果該行字符數(shù)小于等于 size-1,則讀取所有字符,并在最后補(bǔ)充 '\0'。即,每次最多讀取 size-1 個(gè)字符。
  • stream為文件流指針。


【返回值】讀取成功,返回讀取到的字符串,即string;失敗或讀到文件結(jié)尾返回NULL。因此我們不能直接通過(guò)fgets()的返回值來(lái)判斷函數(shù)是否是出錯(cuò)而終止的,應(yīng)該借助feof()函數(shù)或者ferror()函數(shù)來(lái)判斷。
注意:fgets()與gets()不一樣,不僅僅是因?yàn)間ets()函數(shù)只有一個(gè)參數(shù) FILE *stream,更重要的是,fgets()可以指定最大讀取的字符串的個(gè)數(shù),杜絕了gets()使用不當(dāng)造成緩存溢出的問(wèn)題。

1 #include<stdio.h>2 int main() {3 char str[10];4 fgets(str, 10, stdin);5 printf("%s\n", str); 6 7 return 0;8 }

輸出:

yinheyi@ubuntu:~/learn/c_language/1$ ./test.out asd asdyinheyi@ubuntu:~/learn/c_language/1$ ./test.out safdsdafsdaaaaaaaa safdsdafs

?

?

?

文件的讀取:

?

?

?

?

?

ASCII 表:

0000 0000 0 00 NUL ? ^@ 空字符(Null) 0000 0001 1 01 SOH ? ^A 標(biāo)題開(kāi)始 0000 0010 2 02 STX ? ^B 本文開(kāi)始 0000 0011 3 03 ETX ? ^C 本文結(jié)束 0000 0100 4 04 EOT ? ^D 傳輸結(jié)束 0000 0101 5 05 ENQ ? ^E 請(qǐng)求 0000 0110 6 06 ACK ? ^F 確認(rèn)回應(yīng) 0000 0111 7 07 BEL ? ^G 響鈴 0000 1000 8 08 BS ? ^H 退格 0000 1001 9 09 HT ? ^I 水平定位符號(hào) 0000 1010 10 0A LF ? ^J 換行鍵 0000 1011 11 0B VT ? ^K 垂直定位符號(hào) 0000 1100 12 0C FF ? ^L 換頁(yè)鍵 0000 1101 13 0D CR ? ^M Enter鍵 0000 1110 14 0E SO ? ^N 取消變換(Shift out) 0000 1111 15 0F SI ? ^O 啟用變換(Shift in0001 0000 16 10 DLE ? ^P 跳出數(shù)據(jù)通訊 0001 0001 17 11 DC1 ? ^Q 設(shè)備控制一(XON 啟用軟體速度控制) 0001 0010 18 12 DC2 ? ^R 設(shè)備控制二 0001 0011 19 13 DC3 ? ^S 設(shè)備控制三(XOFF 停用軟體速度控制) 0001 0100 20 14 DC4 ? ^T 設(shè)備控制四 0001 0101 21 15 NAK ? ^U 確認(rèn)失敗回應(yīng) 0001 0110 22 16 SYN ? ^V 同步用暫停 0001 0111 23 17 ETB ? ^W 區(qū)塊傳輸結(jié)束 0001 1000 24 18 CAN ? ^X 取消 0001 1001 25 19 EM ? ^Y 連線介質(zhì)中斷 0001 1010 26 1A SUB ? ^Z 替換 0001 1011 27 1B ESC ? ^[ 退出鍵 0001 1100 28 1C FS ? ^\ 文件分割符 0001 1101 29 1D GS ? ^] 群組分隔符 0001 1110 30 1E RS ? ^^ 記錄分隔符 0001 1111 31 1F US ? ^_ 單元分隔符 0010 0000 32 20 (space) 0010 0001 33 21 ! 0010 0010 34 22 " 0010 0011 35 23 # 0010 0100 36 24 $ 0010 0101 37 25 % 0010 0110 38 26 & 0010 0111 39 27 ' 0010 1000 40 28 ( 0010 1001 41 29 ) 0010 1010 42 2A * 0010 1011 43 2B + 0010 1100 44 2C , 0010 1101 45 2D - 0010 1110 46 2E . 0010 1111 47 2F / 0011 0000 48 30 0 0011 0001 49 31 1 0011 0010 50 32 2 0011 0011 51 33 3 0011 0100 52 34 4 0011 0101 53 35 5 0011 0110 54 36 6 0011 0111 55 37 7 0011 1000 56 38 8 0011 1001 57 39 9 0011 1010 58 3A : 0011 1011 59 3B ; 0011 1100 60 3C < 0011 1101 61 3D = 0011 1110 62 3E > 0011 1111 63 3F ? 0100 0000 64 40 @ 0100 0001 65 41 A 0100 0010 66 42 B 0100 0011 67 43 C 0100 0100 68 44 D 0100 0101 69 45 E 0100 0110 70 46 F 0100 0111 71 47 G 0100 1000 72 48 H 0100 1001 73 49 I 0100 1010 74 4A J 0100 1011 75 4B K 0100 1100 76 4C L 0100 1101 77 4D M 0100 1110 78 4E N 0100 1111 79 4F O 0101 0000 80 50 P 0101 0001 81 51 Q 0101 0010 82 52 R 0101 0011 83 53 S 0101 0100 84 54 T 0101 0101 85 55 U 0101 0110 86 56 V 0101 0111 87 57 W 0101 1000 88 58 X 0101 1001 89 59 Y 0101 1010 90 5A Z 0101 1011 91 5B [ 0101 1100 92 5C \ 0101 1101 93 5D ] 0101 1110 94 5E ^ 0101 1111 95 5F _ 0110 0000 96 60 ` 0110 0001 97 61 a 0110 0010 98 62 b 0110 0011 99 63 c 0110 0100 100 64 d 0110 0101 101 65 e 0110 0110 102 66 f 0110 0111 103 67 g 0110 1000 104 68 h 0110 1001 105 69 i 0110 1010 106 6A j 0110 1011 107 6B k 0110 1100 108 6C l 0110 1101 109 6D m 0110 1110 110 6E n 0110 1111 111 6F o 0111 0000 112 70 p 0111 0001 113 71 q 0111 0010 114 72 r 0111 0011 115 73 s 0111 0100 116 74 t 0111 0101 117 75 u 0111 0110 118 76 v 0111 0111 119 77 w 0111 1000 120 78 x 0111 1001 121 79 y 0111 1010 122 7A z 0111 1011 123 7B { 0111 1100 124 7C | 0111 1101 125 7D } 0111 1110 126 7E ~ 0111 1111 127 7F DEL ? ^? 刪除

總結(jié)

以上是生活随笔為你收集整理的基本的输入输出函数介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。