在 C 語言中列印格式化文字
Jinku Hu
2023年10月12日
本文將介紹幾種在 C 語言中列印格式化文字到控制檯的方法。
使用帶有%s
指定符的 printf
函式列印字串
printf
函式是標準輸入/輸出庫中使用最多的部分之一。實際上,有一整套專門用於多種場景的 printf
函式,所有這些函式在這個網頁上都有詳細的記錄。在本文中,我們只演示使用 printf
函式進行格式化輸出。
printf
的獨特之處在於它可以接受可變數量的引數。也就是說,函式引數可以分為格式字串和其他引數兩部分。格式字串指定了函式的格式化部分,它包括普通字元和以%
符號開頭的指定符。最簡單的形式在下面的例子中演示,在第一次呼叫中,printf
將字串本身作為唯一的引數,第二次呼叫在格式字串中宣告一個%s
的指定符,後面是字串變數引數。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
const char* str1 = "fabulae mirabiles";
printf("String literal\n");
printf("%s\n", str1);
exit(EXIT_SUCCESS);
}
輸出:
String literal
fabulae mirabiles
格式字串的另一個有用的功能是指定從傳遞給函式的字串引數中顯示多少個字元。接下來的示例程式碼演示了這個問題的兩種解決方案。
第一個將表示字元數的整數放在%
和 s
符號之間;因此,從給定的字串引數中只列印 6 個字元。第二種 printf
呼叫將*
字元代替,讓使用者從其中一個引數中傳遞積分值。後一種方法的好處是可以在執行時計算出值,而前一種方法需要硬編碼。請注意,在這兩種情況下,%
符號後面的 .
是必要的。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
const char* str1 = "fabulae mirabiles";
printf("%.6s\n", str1);
printf("%.*s \n", 6, str1);
exit(EXIT_SUCCESS);
}
輸出:
fabula
fabula
使用 printf
函式和%i
指定符來列印整數
printf
可以列印不同表示方式的整數。常見的方法包括修改顯示整數的基數。整數引數可以用%i
或%d
指定符表示。正數和負數都是自動格式化的,除了正數不顯示加號外,可以用明確的指定符%+i
來表示。十六進位制和八進位制數字可以用%x
和%o
指定符相應地輸出。%X
指定符顯示大寫字母格式的十六進位制數字。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("%i %d %.6i %+i %i\n", 11, 22, 12, 41, -31);
printf("%.4x %x %X %#x\n", 126, 125, 125, 100);
printf("%.4o %o\n", 8, 11);
exit(EXIT_SUCCESS);
}
輸出:
11 22 000012 +41 -31
007e 7d 7D 0x64
0010 13
作者: Jinku Hu