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]);
}
最常用的是方法一,因为它直接遍历原本的字符串,逻辑很清晰(如果是最后一个字符就不加空格)。方法二在处理一些严格的竞赛题或者格式化输出
- 随笔练习 2026-10-23
- 求最大公约数以及最小公倍数 2026-10-23
- 一元二次方程求解 2026-10-23
- 冒泡排序 2026-10-22
- 求水仙花数 2026-10-22
- 去掉末尾空格 2026-10-08
- 输入某一时刻,输出下一秒 2026-10-08
- 如何输出字符串位数 2026-09-28
- 实现倒序输出(for循环) 2026-09-28
- 特殊换行代码 2026-09-28
- C 语言中手动遍历字符串的经典写法 2026-09-28