C-过滤多余的空格

本文介绍了一个编程问题,如何从输入的字符串中过滤掉连续的空格,只保留一个空格,并确保句子首尾不包含空格,使用C语言中的scanf函数实现。
摘要由CSDN通过智能技术生成

一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。

输入格式

一行,一个字符串(长度不超过 200),句子的头和尾都没有空格。

输出格式

过滤之后的句子。

Sample 1

Input

Output

Hello      world.This is    c language.

Hello world.This is c language.

代码实现:

#include <stdio.h>

int main() {
    char str[205];
    int x = 1;
    while ((scanf("%s", str) ) != EOF) {
        if (x == 1) {
            printf("%s", str);
            x++;
        } else
            printf(" %s", str);
    }
    return 0;
}

问题描述:输入一行句子代表一行字符串,字符串中可能含多个空格,现需使多个空格仅需输出一个,且保证句子的头和尾都不包含空格。

解题思路:初读觉得先使用一个字符串读入,然后再使用另一个字符串输出,即只保留第一个字符串中不是连续两个空格的字母,但判断条件时,条件考虑不充分,于是想到可以使用scanf函数进行解答,即,可以将一串字符分多次读入,当scanf函数读到空格时便会停止,故可以scanf函数读入,然后在输出时多加一个空格即可。

错误描述:未控制好句子的首尾不含空格。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值