C++ 去除字符串首尾空格代码问题剖析与修正
你的代码试图实现一个去除字符串首尾空格的功能,但存在一些问题。以下是主要问题和改进建议: 1. 数组越界:在 `trim` 函数中,当处理完字符串后,你将 `str[j+1]='\0';` 这会导致数组越界,因为 `j` 已经指向了字符串的末尾。 2. 未正确移动字符:在去除首尾空格后,没有将中间的字符前移。 3. 未处理连续空格:如果字符串中有多个连续空格,它们不会被正确处理。 4. 未考虑空字符串:如果输入的是空字符串,程序会出错。 下面是修正后的代码: ```cpp #include <iostream> using namespace std; void trim(char str[]) { int start = 0, end = 0; int length = 0; // Find the length of the string while (str[length] != '\0') { length++; } // Find the first non-space character from the beginning while (str[start] == ' ') { start++; } // Find the last non-space character from the end end = length - 1; while (end >= 0 && str[end] == ' ') { end--; } // Move characters to the beginning of the array int j = 0; for (int i = start; i <= end; i++) { str[j++] = str[i]; } // Null-terminate the string str[j] = '\0'; } int main() { char a[1000]; cin.getline(a, 1000); trim(a); cout << a << endl; return 0; } ``` 解释: 1. 计算字符串长度:首先计算字符串的长度。 2. 找到第一个非空格字符的位置:从字符串的开头开始查找第一个非空格字符的位置。 3. 找到最后一个非空格字符的位置:从字符串的末尾开始查找最后一个非空格字符的位置。 4. 移动字符:将中间部分的字符移到字符串的开头。 5. 添加终止符:在新的字符串末尾添加终止符 `'\0'`。 这样,你的 `trim` 函数可以正确地去除字符串首尾的空格,并且不会发生数组越界的问题。 ######[AI写代码神器 | 579点数解答 | 2024-11-19 16:57:32]
- C++ 求解:最少操作次数让字符串无子串 “friend” (字节豆包 | 153点数解答 | 2024-08-17 16:29:54)478
- C++ 求解:最少操作次数让字符串不再含 “friend” 子串!(讯飞星火 | 260点数解答 | 2024-08-17 16:30:49)464
- Python 巧解:最少操作次数让字符串告别“friend”子串(字节豆包 | 139点数解答 | 2024-08-18 13:04:14)401
- 3414 数字游戏:Python 求解 8 位 01 字符串中 1 的个数 (字节豆包 | 106点数解答 | 2024-10-27 14:23:27)426
- 巧用字符添加,计算字符串中“our”最大数量及开发注意要点(DeepSeek | 376点数解答 | 2025-10-30 19:20:06)79
- C 语言实现:处理字符串生成最多 “our” 串,附代码及关键开发注意点 (DeepSeek | 257点数解答 | 2025-10-30 19:20:36)107
- Eclipse超详细设置:让Tab键秒变四个空格! (阿里通义 | 238点数解答 | 2024-01-22 17:37:10)272
- Python 编程:轻松统计输入字符中字母、数字、空格及其他字符个数(字节豆包 | 239点数解答 | 2024-10-26 20:53:28)200
- C语言实现:精准输出n个输入字符串中最长字符串的方法与注意点(字节豆包 | 356点数解答 | 2024-12-15 00:39:07)183
- C语言实现:奇数偶数求和、字符统计与慈善募捐计算全解析(字节豆包 | 977点数解答 | 2024-12-21 10:27:40)162
- C++ 代码实现:奇数偶数求和、字符统计与慈善募捐计算(字节豆包 | 1007点数解答 | 2024-12-21 10:28:14)148
- Python 实现列字符串替换:将 \t 换为空格及处理注意要点(字节豆包 | 127点数解答 | 2025-03-14 17:29:22)185