c语言怎么过滤多余的空格
在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;
}
以上两种方法都可以过滤掉多余的空格,输出结果为过滤后的字符串。