C 在字符串中的单词之间只保留一个空格

C 在字符串中的单词之间只保留一个空格,c,C,我正试图用C语言编写一个函数来删除字符串中的所有乘法空格 例如: " some random string " => "some random string" 我想要一个void函数来获取一个字符串,不需要更改它,只需打印它。 我以前看过一些关于这个问题的帖子,但没有找到我需要的东西 以下是一个开始的示例: #include <stdio.h> void print_str_but_no_mul_spaces(char* str) { //

我正试图用C语言编写一个函数来删除字符串中的所有乘法空格

例如:

"  some    random       string   " => "some random string"
我想要一个void函数来获取一个字符串,不需要更改它,只需打印它。
我以前看过一些关于这个问题的帖子,但没有找到我需要的东西

以下是一个开始的示例:

#include <stdio.h>

void print_str_but_no_mul_spaces(char* str)
{
    // eat pre-found whitespaces
    while(*str && *str == ' ')
        str++;
    while(*str)
    {
        // If this is not the prelast char AND
        // the next char is not a space OR
        // the current char is not a space AND next char is a space
        if(*(str + 1) != '\0' && (*(str + 1) != ' ' || (*str != ' ' && *(str + 1) == ' ')))
            putchar(*str);
        str++;
    }
}

int main(void)
{
    print_str_but_no_mul_spaces("  some    random       string   ");
    return 0;
}
#包括
无效打印字符,但没有多个空格(字符*str)
{
//吃预先发现的空白
而(*str&&*str=='')
str++;
while(*str)
{
//如果这不是上一个字符,则
//下一个字符不是空格或空格
//当前字符不是空格,下一个字符是空格
如果(*(str+1)!='\0'&(*(str+1)!=''.| |(*str!='&*(str+1)=''))
putchar(*str);
str++;
}
}
内部主(空)
{
打印字符串,但不打印多个空格(“一些随机字符串”);
返回0;
}

这应该会激励你坚持下去,让你记住在发帖前总是要展示一些研究成果。祝你好运

你试过什么?为什么不起作用?可能是你写的“我正试图写一个函数…”的重复。所以我想你写了一个函数,由于某种原因它不能工作。如果你想得到帮助,你需要回答你的问题,并在那里展示你的代码,你还可以写:“我以前看过一些关于这个问题的帖子,但没有找到我需要的东西。”。也许你应该告诉我们你到底需要什么。对不起,但你需要说得更清楚些。”从哪里得到一个字符串我想要一个空函数“为什么这个约束?”?如果字符串获取失败,如何将失败通知给调用方?”没有找到我需要的东西——见上面的@MichaelWalz。