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

C語言程式碼執行流程與結果詳細解析

     編輯:C 語言問答

程式碼分析與執行流程解說

這是一個經典的 C 語言陣列與字串處理練習題。原始碼中存在語法錯誤(如陣列宣告缺少右中括號),修正後的完整程式碼如下:

#include <stdio.h>

int main() {
    int i, j;
    static char x[3][6] = {"black", "red", "blue"};
    char y[3][6];
    
    printf("Input strings:");
    scanf("%s %s %s", y[0], y[1], y[2]);
    
    printf("print strings:\n");
    for (i = 0; i < 3; i++) {
        printf("%s\n", x[i]);
    }
    printf("%s, %s, %s\n", y[0], y[1], y[2]);
    
    return 0;
}

執行步驟詳細說明

  1. 靜態陣列初始化:`x` 為二維字元陣列,預存三個字串 "black"、"red"、"blue"。`y` 為未初始化的二維字元陣列,用於儲存使用者輸入。
  2. 使用者輸入:程式提示 "Input strings:",透過 `scanf("%s %s %s", y[0], y[1], y[2])` 讀取三個以空白分隔的字串,分別存入 `y[0]`、`y[1]`、`y[2]`。注意:`%s` 會自動在字串末尾加上 `\0`,且遇到空白、換行或 Tab 就停止讀取。
  3. 輸出靜態陣列內容:`for` 迴圈依序印出 `x[0]`、`x[1]`、`x[2]`,每行一個字串。
  4. 輸出使用者輸入的字串:最後一行以逗號分隔格式印出 `y` 陣列的三個字串。

範例執行結果

假設使用者輸入:apple banana orange

Input strings:apple banana orange
print strings:
black
red
blue
apple, banana, orange

常見錯誤與注意事項

  • 陣列大小宣告必須足夠容納字串與結束符 `\0`,本例中 `[6]` 可容納長度 5 以內的字串。
  • `scanf` 使用 `%s` 時不檢查邊界,若輸入過長會造成緩衝區溢位,實務上建議使用 `fgets` 或指定寬度如 `%5s`。
  • 原始碼中的 `main()` 缺少回傳型別 `int`,現代 C 標準建議明確宣告 `int main(void)` 或 `int main()` 並回傳 0。

透過這個範例,可以清楚理解二維字元陣列的初始化、字串輸入輸出以及迴圈遍歷輸出的基本操作。

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