输入字符串s过滤多余空格直留一个空格 c语言
时间: 2024-05-08 22:14:54 浏览: 105
可以使用双指针的方法,从头到尾遍历字符串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语言中,你可以使用`strtok()`函数配合循环结构来去掉字符串中的空格。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
void remove_spaces(char* str) {
char* token = strtok(str, " "); // 分割字符串," "代表空格
while (token != NULL) { // 当找到非空格字符时,添加到新字符串
strcat(result, token);
token = strtok(NULL, " ");
}
}
int main() {
char input[100];
printf("请输入一个包含空格的字符串: ");
fgets(input, sizeof(input), stdin); // 读取用户输入,包括换行符
input[strcspn(input, "\n")] = '\0'; // 去掉fgets读取的换行符
char result[100] = "";
remove_spaces(input);
printf("去除空格后的字符串: %s\n", result);
return 0;
}
```
在这个程序中,我们首先从用户获取输入,然后通过`remove_spaces`函数去除了所有空格。最后打印出处理后的字符串。
c语言输入一个字符串,讲所有东西空格删掉 并输出
在C语言中,如果你想从用户输入的字符串中删除所有的空格,并将其输出,可以使用`strtok()`函数配合循环。首先需要创建一个动态数组来存储结果,因为原始字符串长度可能会变短。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
int main() {
char str[100];
printf("请输入一个字符串: ");
fgets(str, sizeof(str), stdin); // 读取用户输入直到换行符
str[strcspn(str, "\n")] = '\0'; // 删除换行符
char* token = strtok(str, " "); // 分割字符串,空格作为分隔符
char result[MAX_LENGTH] = "";
while (token != NULL) {
strcat(result, token);
token = strtok(NULL, " "); // 再次分割,直到无更多字符
}
printf("去除空格后的字符串: %s\n", result);
return 0;
}
```
这段代码会提示用户输入字符串,然后删除其中的所有空格,最后输出处理后的字符串。
阅读全文