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

C語言字符串輸入輸出實戰:puts、gets、scanf 與 printf 的差異詳解

     編輯:C 語言基礎

字符串常數賦值與結束符

以字符串字面值初始化字符數組(static char c[]="BASIC\ndBASE";)會自動在末尾附加 \0,佔用額外 1 字節。輸出時用 printf("%s\n", c),格式字串 %s 直接接收數組名(首地址)。

puts / gets 與 printf / scanf 的關鍵差異

  • puts(char *str):輸出字符串並自動換行,支援轉義字符(如 \n)。
  • gets(char *str):從鍵盤讀取一整行(含空格),以換行符結束,不會因空格截斷,回傳首地址。
  • scanf("%s", str):遇空格、Tab、換行即停止,無法讀取含空格字串。

範例對比:

/* gets 讀取整行 */
char st[15];
gets(st); puts(st);  // 輸入 "this is a book" 完整輸出

/* scanf 遇空格截斷 */
scanf("%s", st);     // 輸入 "this is a book" 僅讀 "this"

解決空格截斷:多數組分段讀取

char st1[6], st2[6], st3[6], st4[6];
scanf("%s%s%s%s", st1, st2, st3, st4);
printf("%s %s %s %s\n", st1, st2, st3, st4);

將一行字串按空格拆分存入多個數組,再合併輸出。

數組名即首地址的本質

char c[10] 首地址假設為 2000,c 即代表 2000。scanf("%s", c) 正確,scanf("%s", &c) 錯誤。printf("%s", c) 從首址逐字輸出至 \0。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved