首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C Primer Plus 學習筆記:第四章 字串與格式化輸入輸出

     編輯:關於C語言

第四章 字串與格式化輸入/輸出

4.1 導讀

本章將介紹 C 語言中字串的處理方式、常量的定義,以及 printf() 和 scanf() 兩大核心格式化 I/O 函數的深度用法。

4.2 字串基礎

字串本質上是一個或多個字符的序列(如 "Zing went"),雙引號僅作為定界符,不屬於字串內容。

4.2.1 char 數組與空字符

C 語言沒有專門的字串類型,而是將字串存儲在 char 數組中。字符佔據相鄰的存儲單元,每個字符一個單元。數組最後一位存放空字符 \0,作為字串結束的標誌。因此,數組大小至少要比實際字符數多 1。

4.2.2 字串的使用

使用 %s 格式符可讓 printf() 輸出字串。scanf() 讀取輸入時會自動在末尾添加 \0,但會在遇到第一個空白字符(空格、製表符、換行符)時停止讀取。注意:'x' 是字符常量(基本類型),而 "x" 是字串字面量(派生類型,即數組)。

4.2.3 strlen() 函數

sizeof 以位元組為單位返回數組總大小,而 strlen() 以字符為單位返回字串實際長度(不含 \0)。例如:char name[40] 時 sizeof name == 40;char name[] = "Mo" 時 sizeof name == 3(含結束符)。

4.3 常量與 C 預處理器

#define NAME value 會在編譯階段用 value 替換所有的 NAME,這稱為「編譯時代入法」。由於是文本替換機制,故行末不加分號。

4.3.1 const 修飾符

C90 標準引入 const 關鍵字,可將變量聲明為常量,例如 const int MONTHS = 12;。

4.3.2 系統定義的限制常量

頭文件 limits.h 和 float.h 分別定義了整數與浮點類型的取值範圍,如 INT_MAX、INT_MIN 等。

4.4 深入 printf()

4.4.1 轉換說明

printf() 根據變量類型選擇轉換說明(%c、%d 等)將數據轉為可顯示形式。%% 輸出百分號;%g 根據數值自動選擇 %f 或 %e。函數使用的是值(變量、常量或表達式的結果)。

4.4.2 修飾符

  • -:左對齊
  • +:有符號值顯示正負號
  • 空格:正值前加空格,負值顯示減號
  • #:啟用替代形式(如強制顯示小數點)
  • 0:數值格式以 0 填充寬度而非空格

4.4.3 返回值

printf() 返回實際輸出的字符數(不含 \0);發生輸出錯誤時返回負數。

4.4.4 長字串輸出

若兩個雙引號字串僅由空白字符分隔,編譯器會自動將它們連接為一個字串。例如 "young" "lovers" 變為 "younglovers"。

4.5 深入 scanf()

讀取基本類型變量時需在變量名前加 & 取地址;但讀取字串到字符數組時,數組名本身即地址,不可加 &。scanf() 遇空白字符停止讀取。

4.6 * 修飾符的妙用

  • printf() 中:用 * 代替寬度或精度數值,由參數動態指定。例:printf("Weight = %*.*f\n", width, precision, weight);
  • scanf() 中:%*d 表示跳過該輸入項。例:scanf("%*d %*d %d", &n); 跳過前兩個整數,讀取第三個賦給 n。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved