gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:46:48 24 4
gpt4 key购买 nike

任务是删除字符串中所有多余的空格,例如,如果字符串如下所示:

   volim      OR      

程序完成后应该如下所示:

volim OR

所以程序必须删除字符串前后以及单词之间的所有空格,所以最终每个单词之间只有一个空格。这是我到目前为止所拥有的:

#include <stdio.h>

char *IzbaciViskaRazmake (char *Str)
{
char *p = Str;
char *p2 = Str;
while(*p!='\0')
{
if(*p==' ')
p++;
else if(*p!=' ')
{
*p2 = *p;
p2++;
p++;
}
}
*p2='\0';
return Str;
}

int main() {
char tekst[] = " volim OR ";
IzbaciViskaRazmake(tekst);
printf("'%s'",tekst);
return 0;
}

我的代码的问题是它删除了所有空格,因此给出了输出

volimOR

如何修复我的代码,使其保留单词之间的空格。PS- 指针的使用是必须的。

最佳答案

您可以通过将第一个 (空白)添加到 *p2 并跳过其余 (空白) 使用 while 循环

尝试修改后的代码,这会起作用:-

#include <stdio.h>

char *IzbaciViskaRazmake(char *Str)
{
char *p = Str;
char *p2 = Str;
while (*p != '\0')
{
if (*p == ' ')
{
if (*p != *Str) // Not begining
{
*p2 = *p; // adding the first ' '
p2++;
p++;
}
while (*p == ' ') // skipping the rest ' '
{
p++;
}
}
else
{
*p2 = *p;
p2++;
p++;
}
}
if (*(p2 - 1) == ' ') //ends with space
{
p2--;
}
*p2 = '\0';

return Str;
}

int main()
{
char tekst[] = " volim OR ";
IzbaciViskaRazmake(tekst);
printf("'%s'", tekst);
return 0;
}

输出:-

'volim OR'

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

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