代碼片段:
sprintf(buf, "%d%d%d", x, y, z); // buf = "123"
for (l = 0; l < strlen(buf); l++)
printf("%s\n", buf[l]); // 錯誤:%s 期望 char*,實傳 char
#include 缺少頭文件名(應為 stdio.h、string.h)printf("%s", buf[l]) 傳入單字符,導致以字符值為地址讀取內存 → 段錯誤或亂碼// 方案 1:逐字符打印
for (l = 0; l < strlen(buf); l++)
printf("%c\n", buf[l]);
// 方案 2:直接打印整個字符串
printf("%s\n", buf);
printf("len=%zu\n", strlen(buf));-Wall -Wextra 會直接報警 format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’