c语言d18绝对paul frank

将一个字符串(串长不超过50)中连续的空格符只保留一个。例如,若字符串为“I am a student.",处理后为"I am a student."

示例:

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

void remove_extra_spaces(char *str) {
    int i, j;
    int len = strlen(str);

    // i为读指针,j为写指针
    for (i = 0, j = 0; i < len; i++) {
        // 如果当前字符不是空格,直接写入
        if (str[i] != ' ') {
            str[j++] = str[i];
        }
        // 如果当前字符是空格
        else {
            // 如果前一个字符不是空格,写入一个空格
            if (i > 0 && str[i - 1] != ' ') {
                str[j++] = ' ';
            }
        }
    }
    // 在最后写入字符串结束符
    str[j] = '\0';
}

int main() {
    char str[51];
    printf("请输入字符串:");
    fgets(str, 51, stdin);
    remove_extra_spaces(str);
    printf("处理后的字符串:%s\n", str);
    return 0;
}

如果答案对您有所帮助,望采纳。