gpt4 book ai didi

c - 函数删除多余的空格,但在 char 指针中的单词之间留下一个空格

转载 作者:行者123 更新时间:2023-11-30 15:49:10 25 4
gpt4 key购买 nike

我需要一个函数,它将采用 char *s = "abc def gf ijklmn"这样的 char 指针。如果通过函数 int space_remove(char *) 传递,它应该返回多余空格的数量并修改字符串并取出多余空格。

int space_remove(char *s)
{
int i = 0, ic = 1, r = 0,space = 0;
//char *sp = (char *) malloc(strlen(s) * sizeof(char));
char sp[256];
while (*(s+i) != '\0'){
if (*(s+i) == ' ' && *(s+i+1) == ' '){
space = 1;
r++;
}
if (space){
sp[i] = *(s+i+r);
i++;
}

else if (!space){
sp[i] = *(s+i+r);
i++;

}
else {
sp[i] = *(s+i+r);
i++;
}
}
sp[i+1] = '\0';
printf("sp:%s \n",sp);
s = sp;
//free(sp);
return r;
}

这里有什么帮助吗?

如果字符串是“abc(10个空格)def(20个空格)hijk”,它应该返回“abc(1个空格)def(1个空格)hijk”

最佳答案

有 2 个问题

  1. while 循环中将 space 重置为 0

  2. 不要返回 sp in,因为它是本地字符数组。您可以复制 s 中的字符串。

    strcpy(s, sp);

而不是

s = sp;

strcpy 是安全的,因为当没有任何内容需要修剪时,sp 的长度应为 s 的最大长度。

关于c - 函数删除多余的空格,但在 char 指针中的单词之间留下一个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16392548/

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