gpt4 book ai didi

C --- 删除字符串中的所有多余空格,不包括指定字符之间的字符

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

我有这个字符串:print“Foo cakes are yum”我需要以某种方式去除所有额外的空格,但只保留引号之间的文本。这是我到目前为止所拥有的:

char* clean_strip(char* string)
{
int d = 0, c = 0;
char* newstr;
while(string[c] != '\0'){
if(string[c] == ' '){
int temp = c + 1;
if(string[temp] != '\0'){
while(string[temp] == ' ' && string[temp] != '\0'){
if(string[temp] == ' '){
c++;
}
temp++;
}
}
}
newstr[d] = string[c];
c++;
d++;
}
return newstr;
}

这将返回此字符串:print“Foo cakes are yum”

我需要能够跳过引号之间的文本,所以我得到这个:打印“Foo cakes are yum”

这是同样的问题,但对于 php,我需要一个 c 答案:Remove spaces in string, excluding these in specified between specified characters

请帮忙。

最佳答案

试试这个:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* clean_strip(char* string)
{
int d = 0, c = 0;
char* newstr = malloc(strlen(string)+1);
int quoted = 0;

while(string[c] != '\0'){
if (string[c] == '"') quoted = !quoted;

if(!quoted && string[c] == ' '){
int temp = c + 1;
if(string[temp] != '\0'){
while(string[temp] == ' ' && string[temp] != '\0'){
if(string[temp] == ' '){
c++;
}
temp++;
}
}
}

newstr[d] = string[c];
c++;
d++;
}
newstr[d] = 0;
return newstr;
}


int main(int argc, char *argv[])
{
char *input = "print \"Foo cakes are yum\"";
char *output = clean_strip(input);
printf(output);
free(output);
return 0;
}

这将产生输出:

print "Foo cakes      are   yum"

它的工作原理是查找 " 字符。如果找到,则会切换变量 quoted。如果 quoted 为 true,则空格删除被跳过。

此外,您的原始函数永远不会为 newstr 分配内存。我添加了 newstr = malloc(...) 部分。在写入字符串之前为字符串分配内存非常重要。

关于C --- 删除字符串中的所有多余空格,不包括指定字符之间的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34959396/

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