上一篇我們介紹了什麼是變數,也結合了資料型態來讓大家了解,接下來大家有沒有想過,如果遇到需要讓使用者輸入資料來處理,並輸出對應結果時要怎麼辦呢?
接下來我們來結合變數,儲存輸入並輸出資料內容吧!
在前面我們有提到過資料是有不同形態(字元、整數、浮點數等等的)的,而我們會用不同資料型態的變數來儲存這個資料,但如果今天我們要把變數輸出或讀取輸入儲存到變數裡時,要怎麼做處理才能讓電腦知道這個被輸入或輸出的資料,要以什麼樣的格式輸出、要以什麼樣的型態儲存?
這時候我們就會用到c語言中的一個語法--格式指定字,格式指定字聽起來好像很複雜,但其實就是代替變數本身來表示整體輸入輸出格式的存在。
在c語言中我們第一個接觸到的輸出code就是「printf("Hello World!\n");」,其中「""」包含的東西我們會稱他為字串,但是當我們需要輸出的字串包含變數時,這時我們就會使用格式指定字,如以下:
#include <stdio.h>
int main(){
int a = 3;
printf("your data: %d\n", a);
return 0;
}
輸出字串中的「%d」就是代替變數a的格式指令字,你可以把它當成變數在字串中的替代詞,接下來我們將會介紹格式指令字有哪些。
我們先來複習一下前面第五篇的基本資料型態表吧:
類別 | 所佔記憶體(bytes) | 存什麼樣的資料 | 格式指定字 |
---|---|---|---|
char | 1 | 字元,舉凡a~z/0~9/單一符號(+-/*%$#@等) | %c |
int | 4 | 整數,數字範圍從-2147483648~2147483647 | %d |
float | 4 | 單精確度浮點數,即小數 | %f |
double | 8 | 雙精確度浮點數,即小數 | %f |
我們可以從上面的表先簡略的知道,基本的資料型態大概可以用這些格式指定字來表示,若只是讀取使用者輸入時用以上的格式指定字基本上就夠了,但其實還有更多的格式指定字,且有時候若要輸出資料內容時有其他指定格式,這些便不足以應付了。
所以以下我們會詳細整理格式指令字:
指令字 | 說明 |
---|---|
%d.%i | 十進制有號整數 |
%u | 十進制無號整數 |
%o | 八進制有號整數 |
%x.%X | 十六進制有號整數 |
%ld | 十進制long int |
%lld | 十進制long long int |
(備註:有號(signed)、無號(unsigned),可以參考第五篇,不過無號相對較少使用)
指令字 | 說明 |
---|---|
%f | 以小數形式輸出浮點數(Ex. 輸出12.345時為「12.345000」) |
%e | 以科學記號形式輸出浮點數(Ex. 輸出12.345時為「1.234500e+001」) |
%E | 以科學記號形式輸出浮點數(Ex. 輸出12.345時為「1.234500E+001」) |
%g | 依情況使用%f或%e(Ex. 輸出0.345時為「0.345」、輸出0.0000345時為「3.45e-005」) |
(雖然一般來說不會使用,但%g的輸出判斷可以參考這個連結) |
指令字 | 說明 |
---|---|
%c | 字元(是單一的字元) |
%s.%S | 字串(是多個字元) |
指令字 | 說明 |
---|---|
%p | 輸出指標 |
%% | 用於輸出時輸出「%」 |
%* | 是忽略符號,應用如%*d、%*c、%*s,會讓程式忽略、丟棄這個資料 |
%數字 | 是設定資料寬度的用法,多用於輸出,應用如%10d.%15s |
%-數字 | 是設定置左的用法,同時也設定資料寬度,多用於輸出,應用如%-10d.%-15s |
%[] | 用於輸出時只讀取「[]」內的字元,遇到非其內字元會停止讀取,應用如%[aAbB]s、%[a-z]s |
%[^] | 用於輸出時只讀取「[]」之外的字元,遇到為其內字元時會停止讀取,應用如%[^aAbB]s、%[^a-z]s |
到這裡就大致介紹完格式指令詞了,如果有興趣可以參考以下:
microsoft docs
看完上面的格式指令字應該大概知道一些語法了,接下來有些特殊字元也跟輸出格式十分相關:
特殊字元 | 說明 |
---|---|
\n | new line的意思,即換行之符號 |
\0 | 字串結束符,輸出字串時遇到這個特殊字元就會結束輸出 |
\t | tab,跳格 |
\r | 回到該行字首,輸出時會覆蓋先前輸出(Ex. 輸出12345\raaaa時為「aaaa5」) |
\b | backspace,倒退一格輸出時可能覆蓋先前輸出(Ex. 輸出12345\baaaa時為「1234aaaa」、輸出12345\b時為「12345」) |
\a | bell,會發出系統聲 |
\|輸出「\」 | |
\' | 輸出「'」 |
\" | 輸出「"」 |