在 C 語言中列印字元陣列

Jinku Hu 2023年10月12日
  1. 在 C 語言中使用 for 迴圈列印字元陣列的方法
  2. 使用 printf%s 指定符在 C 語言中列印字元陣列
在 C 語言中列印字元陣列

本文將介紹關於如何在 C 語言中列印字元陣列的多種方法。

在 C 語言中使用 for 迴圈列印字元陣列的方法

如果我們想分別列印陣列元素,並以更多的細節格式化輸出,for 迴圈是最明顯的解決方案。該方法的關鍵前提是,我們應該事先知道陣列的長度。

需要注意的是,我們可以使用其他的迭代方法,比如 while 迴圈,但是我們應該知道迭代應該在什麼時候停止的值,否則,迭代就會越界丟擲錯誤。

在下面的例子中,我們演示了 for 迴圈方法,並對六個字元的陣列精確地迭代了 6 次。

#include <stdio.h>
#include <stdlib.h>

#define STR(num) #num

int main(void) {
  char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};

  printf(STR(arr1) ": ");
  for (int i = 0; i < 6; ++i) {
    printf("%c, ", arr1[i]);
  }
  printf("\b\b\n");

  exit(EXIT_SUCCESS);
}

輸出:

arr1: a, b, c, d, e, f

使用 printf%s 指定符在 C 語言中列印字元陣列

printf 函式是一個強大的格式化輸出函式。它可以對輸入變數進行型別指定符的操作,並對變數進行相應的處理。

也就是說,字元陣列內部的結構與 C 式字串相同,只是 C 式字串的字元總是以\0 位元組結束,表示結束點。如果我們在字元陣列的末尾加上 null 位元組,我們可以通過單行 printf 呼叫列印整個陣列。

如果沒有指定結束的 null 位元組,並且用這個方法呼叫 printf,程式可能會嘗試訪問記憶體區域,這很可能會導致分段錯誤。

#include <stdio.h>
#include <stdlib.h>

#define STR(num) #num

int main(void) {
  char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};
  char arr2[] = {'t', 'r', 'n', 'm', 'b', 'v', '\0'};

  printf("%s\n", arr1);
  printf("%s\n", arr2);

  exit(EXIT_SUCCESS);
}

輸出:

abcdeftrnmbv
trnmbv

正如你所看到的,當我們列印沒有 null 結束符的 arr1 時,我們會得到更多的字元,直到迭代到一個 null 結束符-\0

另一種使 printf 函式特殊化的方法是在%s 指定符內傳遞字串中的字元數。一種方法是在符號%s 之間用整數硬編碼字串的長度,也可以用*符號代替,從 printf 引數中取另一個整數引數。請注意,這兩種方法都在數字或星號前加上 . 字元。

#include <stdio.h>
#include <stdlib.h>

#define STR(num) #num

int main(void) {
  char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};
  char arr2[] = {'t', 'r', 'n', 'm', 'b', 'v', '\0'};

  printf("%.6s\n", arr1);
  printf("%.*s\n", (int)sizeof arr1, arr2);

  exit(EXIT_SUCCESS);
}

輸出:

abcdef
trnmbv
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - C Array