C - 删除字符串中的空格

Mik*_*ike 0 c

我正在使用fgets输入一个字符串,例如"Hello World".我想尝试删除单词之间的空白区域,但是我正在尝试不断返回hello @ world(其中@是一个随机字符).

void sortString(char phrase[])
{
    int i, j;
    char temp[200];


    for(i = 0; i < 200; i++)
    {
        if(!(isspace(phrase[i])))
        {
            temp[i] = phrase[i];
        }
    }

    printf("%s", temp);
}
Run Code Online (Sandbox Code Playgroud)

所以我基本上将字符[i]从短语复制到临时数组,如果它不是空格,但我不确定为什么我得到一个随机字符而不仅仅是,例如,helloworld .

Gra*_*and 5

每当你看到一个空白字符时phrase,你只是跳过相同的位置temp,让它保持未初始化(包含垃圾).您需要一个单独的计数器来跟踪temp阵列中的当前位置.

此外,您应检查以字符phrase结尾的字符串\0,而不是盲目地复制所有200个字符,并确保temp字符串也安全终止.

确保temp[]实际上足够大,因此产生的结果可以作为进一步的练习.(看看Gandaro的回答是否有线索.)

void sortString(char phrase[])
{
    int i, j;
    char temp[200];

    for(i = 0, j = 0; phrase[i] != '\0'; i++)
    {
        if(!(isspace(phrase[i])))
        {
            temp[j++] = phrase[i];
        }
    }

    temp[j] = '\0';
    printf("%s", temp);
}
Run Code Online (Sandbox Code Playgroud)