输入字符串s过滤多余空格直留一个空格 c语言
时间: 2024-05-08 11:14:54 浏览: 12
可以使用双指针的方法,从头到尾遍历字符串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语言输入一个字符串s 统计其中的空格和#的个数
下面是一个用 C 语言实现的程序,可以输入一个字符串 s,然后统计其中的空格和 # 的个数:
```c
#include <stdio.h>
int main() {
char s[100];
int space_count = 0, hash_count = 0;
printf("请输入一个字符串:\n");
fgets(s, 100, stdin); // 从标准输入读取字符串,最多读取 100 个字符
for (int i = 0; s[i] != '\0'; i++) { // 遍历字符串 s
if (s[i] == ' ') { // 如果当前字符是空格
space_count++; // 空格计数器加 1
} else if (s[i] == '#') { // 如果当前字符是 #
hash_count++; // # 计数器加 1
}
}
printf("空格个数:%d\n", space_count);
printf("# 的个数:%d\n", hash_count);
return 0;
}
```
这里使用了一个 for 循环来遍历字符串 s,判断每个字符是不是空格或 #,如果是就把计数器加 1。最后输出统计结果。
用c语言写一个用户输入一串字符去掉当中的空格
当用户输入一串字符时,我们可以使用C语言编写一个程序来去掉其中的空格。下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
void removeSpaces(char* str) {
int i, j;
for (i = 0, j = 0; str[i]; i++) {
if (str[i] != ' ') {
str[j++] = str[i];
}
}
str[j] = '\0';
}
int main() {
char str[100];
printf("请输入一串字符:");
fgets(str, sizeof(str), stdin);
// 移除空格
removeSpaces(str);
printf("去掉空格后的字符串为:%s\n", str);
return 0;
}
```
在上面的代码中,我们定义了一个 `removeSpaces` 函数,它接受一个字符数组作为参数,并将其中的空格移除。在 `main` 函数中,我们首先提示用户输入一串字符,然后使用 `fgets` 函数获取用户输入。接下来,我们调用 `removeSpaces` 函数来去掉字符数组中的空格,并最后打印去掉空格后的字符串。
请注意,这个代码示例假设用户输入的字符串长度不超过 100 个字符。如果需要处理更长的字符串,可以相应地调整字符数组的长度。