3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
一把梭系列 ~ C語言範例 (0006) [printf 與 scanf 分析說明] 資料來源: https://openhome.cc/Gossip/CGossip/PrintfScanf.html https://www.cplusplus.com/reference/cstdio/fflush/ ★前言 ★主題:     00.C語言 主控台(console mode) 標準輸出函數庫         學習 C 的過程中,通常是從主控台,也就是文字模式下開始,為了與程式互動,在主控台下輸出程式執行結果,或是從主控台取得使用者的輸入資料是基本需求,在 C 中標準輸入輸出是由 stdio.h 提供,這也就是為何要在程式的一開頭總是加上:         #include              01.C語言 主控台(console mode) 標準輸出函數 ~ printf     printf 時要指定整數、浮點數、字元等進行顯示控制時,要配合格式指定字(format specifier)才可達到,以下列出幾個可用的格式指定碼:         \t:產生Tab空格         \n:產生換行         %c:以字元方式輸出         %d:10 進位(進制)整數輸出         %o:以 8 進位(進制)整數方式輸出         %x、%X:將整數以 16 進位(進制)方式輸出         %u:無號整數輸出         %f:浮點數輸出         %±m.nf:浮點數輸出,m整數位數;n小數位數;± 靠左/靠右對其方向         %*:預留N個字元寬度 (數值和對字串類型 可以更長)         %.*:限制N個字元寬度 (對字串類型 不可更長)         %e、%E:使用科學記號顯示浮點數         %g、%G:浮點數輸出,取 %f 或 %e(%f 或 %E),看哪個表示精簡         %%:顯示 %         %s:字串輸出         %lu:long unsigned 型態的整數         %p:指標型態     02.C語言 主控台(console mode) 標準輸入函數 ~ scanf     scanf 時要指定整數、浮點數、字元等進行輸入控制,要配合格式指定字(format specifier)才可達到,以下列出幾個可用的格式指定碼:         %c:以字元方式輸入         %d:整數輸入         %f:浮點數輸入         %g:浮點數輸入         %s:字串輸入         %d %d:兩個數字,中間使用空白區隔         %d-%d:兩個數字,中間使用-號區隔         %ns:若輸入的字元超過 n,buf 也只會收到 n 個字元加上一個空字元,超過的字元會留在輸入緩衝區。         支援正則(正規)表達式             %[1-5]:限制輸入1 到 5 的字元             %[XYZ]:限制輸入輸入 XYZ 任其中的字元          ★code #include #include int main() { /* printf 時要指定整數、浮點數、字元等進行顯示,要配合格式指定字(format specifier),以下列出幾個可用的格式指定碼: %c:以字元方式輸出 %d:10 進位(進制)整數輸出 %o:以 8 進位(進制)整數方式輸出 %x、%X:將整數以 16 進位(進制)方式輸出 %u:無號整數輸出 %f:浮點數輸出 %±m.nf:浮點數輸出,m整數位數;n小數位數;± 靠左/靠右對其方向 %*:預留N個字元寬度 (數值和對字串類型 可以更長) %.*:限制N個字元寬度 (對字串類型 不可更長) %e、%E:使用科學記號顯示浮點數 %g、%G:浮點數輸出,取 %f 或 %e(%f 或 %E),看哪個表示精簡 %%:顯示 % %s:字串輸出 %lu:long unsigned 型態的整數 %p:指標型態 */ printf("顯示字元 %c\n", 'A'); printf("顯示字元編碼 %d\n", 'A'); printf("顯示字元編碼 %c\n", 65); printf("顯示十進位整數 %d\n", 15); printf("顯示八進位整數 %o\n", 15); printf("顯示十六進位整數 %X\n", 15); printf("顯示十六進位整數 %x\n", 15); printf("顯示科學記號 %E\n", 0.001234); printf("顯示科學記號 %e\n", 0.001234); printf("-----------\n"); printf("example:%.2f\n", 19.234); printf("example:%6.2f\n", 19.234); printf("example:%-6.2f\n", 19.234); printf("-----------\n"); printf("%*d\n", 1, 19); printf("%*d\n", 2, 19); printf("%*d\n", 3, 19); printf("%*d\n", 2, 190); printf("-----------\n"); printf("%.*d\n", 1, 20); printf("%.*d\n", 2, 20); printf("%.*d\n", 3, 20); printf("%.*d\n", 2, 200); printf("-----------\n"); printf("%.*s\n", 4, "JashLiao"); printf("%.*s\n", 7, "JashLiao"); printf("%.*s\n", 8, "JashLiao"); printf("-----------\n"); printf("%*s\n", 4, "JashLiao"); printf("%*s\n", 7, "JashLiao"); printf("%*s\n", 8, "JashLiao"); /* scanf 時要指定整數、浮點數、字元等進行顯示,要配合格式指定字(format specifier),以下列出幾個可用的格式指定碼: %c:以字元方式輸入 %d:整數輸入 %f:浮點數輸入 %g:浮點數輸入 %s:字串輸入 %d %d:兩個數字,中間使用空白區隔 %d-%d:兩個數字,中間使用-號區隔 %ns:若輸入的字元超過 n,buf 也只會收到 n 個字元加上一個空字元,超過的字元會留在輸入緩衝區。 支援正則(正規)表達式 %[1-5]:限制輸入1 到 5 的字元 %[XYZ]:限制輸入輸入 XYZ 任其中的字元 */ printf("-----------\n"); int intbuf; printf("請輸入數字:"); scanf("%d", &intbuf);//請輸入數字:10 printf("你輸入的數字:%d\n", intbuf); printf("-----------\n"); int number1, number2; printf("請輸入兩個數字,中間使用空白區隔):"); scanf("%d %d", &number1, &number2);//請輸入兩個數字,中間使用空白區隔):10 20 printf("你輸入的數字:%d %d\n", number1, number2); printf("請再輸入兩個數字,中間使用-號區隔):");//請再輸入兩個數字,中間使用-號區隔):30-40 scanf("%d-%d", &number1, &number2); printf("你輸入的數字:%d-%d\n", number1, number2); printf("-----------\n"); fflush(stdin); // 清除輸入緩衝區 char buf50[50]; printf("請輸入 1 到 5 的字元:");//請輸入 1 到 5 的字元:1234432155556 scanf("%[1-5]", buf50); printf("輸入的字元為 %s\n", buf50); fflush(stdin); // 清除輸入緩衝區 printf("請輸入 XYZ 任一字元:");//請輸入 XYZ 任一字元:XXXXXXYYZZAAZZZZXXX scanf("%[XYZ]", buf50); printf("輸入的字元為 %s\n", buf50); printf("-----------\n"); fflush(stdin); // 清除輸入緩衝區 char buf10[10]; printf("請輸入字串:");//請輸入字串:1234567890 scanf("%9s", buf10); printf("輸入的字串:%s\n", buf10); return 0; } /* 執行結果文字備份 顯示字元 A 顯示字元編碼 65 顯示字元編碼 A 顯示十進位整數 15 顯示八進位整數 17 顯示十六進位整數 F 顯示十六進位整數 f 顯示科學記號 1.234000E-003 顯示科學記號 1.234000e-003 ----------- example:19.23 example: 19.23 example:19.23 ----------- 19 19 19 190 ----------- 20 20 020 200 ----------- Jash JashLia JashLiao ----------- JashLiao JashLiao JashLiao ----------- 請輸入數字:10 你輸入的數字:10 ----------- 請輸入兩個數字,中間使用空白區隔):10 20 你輸入的數字:10 20 請再輸入兩個數字,中間使用-號區隔):30-40 你輸入的數字:30-40 ----------- 請輸入 1 到 5 的字元:1234432155556 輸入的字元為 123443215555 請輸入 XYZ 任一字元:XXXXXXYYZZAAZZZZXXX 輸入的字元為 XXXXXXYYZZ ----------- 請輸入字串:1234567890 輸入的字串:123456789 */ ★結果: ★延伸說明/重點回顧:     01.介紹了 C/C++ 中標準輸入/輸出(printf/scanf)的基本『格式指定碼』     02.使用『fflush(stdin);』可以清除標準輸入緩衝區(input buffer)     03.文中提及的『正則(正規)表達式』在實務操作上經常使用,有興趣的人可以在本部落格找到其他資訊

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦