gpt4 book ai didi

c - 从 C 中的字符串中删除多余的空格

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:49 24 4
gpt4 key购买 nike

我有这个字符串

"go    for    goa" 

输出应该是

"go for goa"

我想删除多余的空格。这意味着应该用一个空格替换两个或多个连续的空格。我想使用就地算法来完成。

下面是我试过但不起作用的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Function to remove spaces in an string array */
char *removeSpaces(char *str) {
int ip_ind = 1;
/* In place removal of duplicate spaces*/
while(*(str + ip_ind)) {
if ((*(str + ip_ind) == *(str + ip_ind - 1)) && (*(str + ip_ind)==' ')) {
*(str_ip_ind-1)= *(str + ip_ind);
}
ip_ind++;
}
/* After above step add end of string*/
*(str + ip_ind) = '\0';
return str;
}
/* Driver program to test removeSpaces */
int main() {
char str[] = "go for go";
printf("%s", removeSpaces(str));
getchar();
return 0;
}

最佳答案

大多数解决方案似乎不必要地复杂:

#include <ctype.h>
#include <stdio.h>

void strip_extra_spaces(char* str) {
int i, x;
for(i=x=0; str[i]; ++i)
if(!isspace(str[i]) || (i > 0 && !isspace(str[i-1])))
str[x++] = str[i];
str[x] = '\0';
}

int main(int argc, char* argv[]) {
char str[] = " If you gaze into the abyss, the abyss gazes also into you. ";
strip_extra_spaces(str);
printf("%s\n",str);
return 0;
}

关于c - 从 C 中的字符串中删除多余的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17770202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com