【发布时间】:2019-01-09 06:12:22
【问题描述】:
我正在尝试删除字符串中的所有空格。例如,如果字符串有两个空格,那么它将两个空格减少到只有一个空格。
我正在尝试的代码如下:
#include<stdio.h>
main()
{
char s[] = "Ahmed is not here";
int i,k,si = 0,n = 0,ln;
ln = strlen(s);
for(i=0;i<ln;i++)
{
n = s[i];
if(n == 32)
{
si++;
if(si>1)
{
s[i] = '-';
si = 0;
}
}
}
puts(s);
}
问题是:我不知道如何删除那个空白空间,所以我将其替换为“-”。此外,代码也会删除单个空格。请有人更正我的代码并告诉我哪里错了。
【问题讨论】:
-
你可以把它复制到一个新的字符串中并跳转所有的''字符
-
您可以将所有字符向左移动一个或多个索引,并以
/0终止字符串的末尾。另一种可能性是您将所有chars和单个空白复制到另一个数组(您不会复制其他不必要的空白)。 -
如果所需的输出是
Ahmed is not here并且“只有一个空白”,则重复项不能解决它,但会提供有关如何处理的线索,在您的情况下,这意味着记住“前一个字符” ”。那么如果当前字符是空格,前一个字符是空格,则可以忽略。