阅读量:2
在C语言中,可以使用以下方法来过滤多余的空格:
- 使用指针遍历字符串,并用一个新的字符串保存过滤后的结果。
#include <stdio.h> #include <ctype.h> #include <string.h> void filterSpaces(char *str) { char *filtered = str; // 用于保存过滤后的字符串 int isSpace = 0; // 标记当前字符是否为空格 // 遍历字符串 while (*str) { if (isspace(*str)) { // 如果当前字符为空格 if (!isSpace) { // 如果前一个字符不是空格,则将当前字符保存到filtered中 *filtered++ = *str; isSpace = 1; // 设置isSpace为1,表示当前字符为空格 } } else { // 如果当前字符不是空格,则将当前字符保存到filtered中 *filtered++ = *str; isSpace = 0; // 设置isSpace为0,表示当前字符不是空格 } str++; } // 在filtered的末尾添加字符串结束符'\0' *filtered = '\0'; } int main() { char str[100]; printf("请输入字符串:"); scanf("%[^\n]", str); filterSpaces(str); printf("过滤后的字符串为:%s\n", str); return 0; }
- 使用两个指针,一个指向原字符串,一个指向过滤后的字符串,不符合条件的字符直接跳过。
#include <stdio.h> #include <ctype.h> #include <string.h> void filterSpaces(char *str) { char *filtered = str; // 用于保存过滤后的字符串 // 遍历字符串 while (*str) { if (!isspace(*str)) { // 如果当前字符不是空格,则将当前字符保存到filtered中 *filtered++ = *str; } str++; } // 在filtered的末尾添加字符串结束符'\0' *filtered = '\0'; } int main() { char str[100]; printf("请输入字符串:"); scanf("%[^\n]", str); filterSpaces(str); printf("过滤后的字符串为:%s\n", str); return 0; }
以上两种方法都可以过滤掉多余的空格,输出结果为过滤后的字符串。