◆ IRinsho BLOG / 04
头像
←返回列表 c语言学习 / 2026/10/08 / 去掉末尾空格
c语言学习2026/10/08

去掉末尾空格

方法一:在循环内判断是否为最后一个字符(推荐,改动最小)

在打印前判断下一个字符是不是结束符 \0。如果是最后一个字符,只打印字符;否则打印字符加空格。

for (int i = 0; str[i] != '\0'; i++) {
    if (str[i + 1] == '\0') {
        printf("%c", str[i]);       // 最后一个字符,不加空格
    } else {
        printf("%c ", str[i]);      // 不是最后一个,加空格
    }
}

或者写成一行(利用三元运算符):

for (int i = 0; str[i] != '\0'; i++) {
    printf("%c%s", str[i], (str[i + 1] != '\0') ? " " : "");
}

方法二:先打印第一个字符,从第二个字符开始加空格

如果字符串非空,先单独打印第一个字符。然后循环从 i = 1 开始,每次打印 " %c"(空格在前)。这样最后一个字符自然不会有尾随空格。

if (str[0] != '\0') {
    printf("%c", str[0]); // 单独处理第一个字符
    for (int i = 1; str[i] != '\0'; i++) {
        printf(" %c", str[i]); // 后续字符前面加空格
    }
}

方法三:在循环内控制空格打印

判断当前索引 i 是否大于 0,如果是,则在打印字符前先打印一个空格。

for (int i = 0; str[i] != '\0'; i++) {
    if (i > 0) {
        printf(" ");
    }
    printf("%c", str[i]);
}

最常用的是方法一,因为它直接遍历原本的字符串,逻辑很清晰(如果是最后一个字符就不加空格)。方法二在处理一些严格的竞赛题或者格式化输出