输入字符串s过滤多余空格直留一个空格 c语言
时间: 2024-05-08 16:14:54 浏览: 107
可以使用双指针的方法,从头到尾遍历字符串s,遇到多余的空格就跳过,只保留一个空格。
具体实现代码如下:
void filterSpace(char *s) {
char *p = s;
char *q = s;
int flag = 0; // 标记是否遇到过空格
while (*p != '\0') {
if (*p == ' ') {
if (flag == 0) {
*q++ = ' ';
flag = 1;
}
} else {
*q++ = *p;
flag = 0;
}
p++;
}
if (*(q-1) == ' ') {
*(q-1) = '\0';
} else {
*q = '\0';
}
}
其中,p指向当前遍历到的字符,q指向过滤后的字符串的末尾。flag用来标记是否遇到过空格,初始值为0表示还没有遇到过空格。如果当前字符是空格,且之前没有遇到过空格,则将该空格加入到过滤后的字符串中,并将flag设置为1表示已经遇到过空格;否则跳过该空格。如果当前字符不是空格,则将该字符加入到过滤后的字符串中,并将flag设置为0表示还没有遇到过空格。最后需要注意,如果过滤后的字符串的末尾是空格,则将它替换为'\0'。
相关问题
用C语言去除字符串中多余空格
以下是一种用C语言去除字符串中多余空格的方法:
- 定义一个字符数组来存储字符串,例如:char str[100];
- 使用fgets()函数从标准输入中读取字符串,例如:fgets(str, 100, stdin);
- 遍历字符串,逐个字符判断,若是空格字符,则继续向后遍历直到找到一个非空格字符为止,并将该非空格字符复制到当前位置;
- 将最后一个非空格字符的后面位置置为'\0',表示字符串结束;
- 最后输出处理后的字符串,例如:printf("%s\n", str)。
下面是一个示例代码,演示了如何使用这种方法去除字符串中多余空格:
#include <stdio.h>
#include <ctype.h>
int main()
{
char str[100];
fgets(str, 100, stdin);
int i, j;
for (i = j = 0; str[i] != '\0'; i++) {
if (isspace(str[i])) {
while (isspace(str[i + 1])) {
i++;
}
}
str[j++] = str[i];
}
str[j] = '\0';
printf("%s\n", str);
return 0;
}
运行该程序后,输入一个字符串,例如:" hello world ",会输出去除多余空格后的结果:"hello world"。
c语言输入一个字符串
可以使用C语言中的scanf函数来输入一个字符串,具体代码如下:
char str[100];
scanf("%s", str);
其中,str是一个字符数组,用于存储输入的字符串。需要注意的是,scanf函数默认以空格、制表符或换行符作为输入项的分隔符,因此如果需要输入含有空格的字符串,可以使用fgets函数。
阅读全文
相关推荐








