程式 char array[5]; scanf("%s", &array); 讀入字串後,for(i=0;i<5;i++) array[i]+=32; 將**結束符 '\0' 也加 32**,導致 printf("%s") 繼續讀取記憶體直到遇到下一個 0,印出亂碼 (如 ♣)。
char array[100],防止輸入溢位。array[i] != '\0' 或 i < strlen(array),**不處理結束符**。scanf("%99s", array) 限制讀取長度。#include <stdio.h>
#include <string.h>
int main() {
char array[100];
scanf("%99s", array);
for (int i = 0; array[i]; ++i) array[i] += 32; // 僅處理有效字元
printf("%s\n", array);
return 0;
}
tolower() 更安全 (處理非字母不變)。array[i] += 32 僅適用 ASCII 字母,非通用寫法。**「不動結束符」**是字串處理鐵律,違者必現亂碼。