多个空格用一个空格代替

目录

  • 1. 提出问题
  • 2. 问题分析
    • 2-1 提取问题基本元素
    • 2-2 单个元素分析
  • 3. 源代码

1. 提出问题

编写一个将输入复制到输出的程序,并将其中连续的空格用一个空格代替。

2. 问题分析

2-1 提取问题基本元素

  • 输入
  • 输出
  • 多个空格 用一个空格代替

2-2 单个元素分析

==输入和输出==问题,C语言中有如下相关函数:

  • gatchar()

    • 读取标准输入流中下一个字符
      int putchar ( int character );
  • putchar()
    • 写入一个字符到标准输出流
      int getchar ( void );

通俗理解:getchar等待输入,putchar输出



输入输出问题分析完,就是==多个空格用一个空格代替的问题==了。顺着思维往下走,问题的关键在于空格。

  • 非空格
    正常输出
  • 空格
    • 连续

      • 数量
  1. 非空格与空格,YES or No 很容易联想到if判断语句。
  2. 连续与不连续
    1.1 为首个空格 - 正常输出
    1.2 不为首个空格 - 跳过

相信初学者的问题出现了,怎么判断是不是是不是首个空格。设置flag

  • 0 (非空格)
  • 1 (首个空格)
  • 大于1的整数 (非首个空格)

问题解决了。

3. 源代码

#include <stdio.h>

int main(int argc, char *argv[]) {

    int c,flag = 0;

    while( (c = getchar()) != EOF )
    {
        if ( c != ' ' )
        {
            putchar(c);
            flag = 0;
        }
        if ( c == ' ' )
        {
            ++flag;
            if( flag > 0 && flag <= 1 )
            {
                putchar(c);
            }
            else
                continue;
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/Fsiswo/p/11142362.html

时间: 2024-08-02 23:00:29

多个空格用一个空格代替的相关文章

c# 字符串中多个连续空格转为一个空格

#region 字符串中多个连续空格转为一个空格 /// <summary> /// 字符串中多个连续空格转为一个空格 /// </summary> /// <param name="str">待处理的字符串</param> /// <returns>合并空格后的字符串</returns> public static string MergeSpace(string str) { if (str != string

C#:将字符串中连续空格转换为一个空格

使用正则表达式来进行转换,代码如下: 注:Trim()方法是去掉字符串首尾的空格:经过正则转换之后,就可以直接用Split进行分割成数组 "\":是转义  ,   "\s":代表空格   ,  "+":表示多个 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 string str = " a b c d e f "; 6 string res = new

php 将字符串中的连续多个空格转换为一个空格

转载自:http://www.phpernote.com/php-function/633.html /** * 多个连续空格只保留一个 * * @param string $string 待转换的字符串 * @return string $string 转换后的字符串 */ function merge_spaces($string){ return preg_replace("/\s(?=\s)/","\\1",$string); }

PHP删除字符串中的空格和换行符 将字符串中的连续多个空格转换为一个空格

//删除空格和回车 function trimall($str){ $qian=array(" "," ","\t","\n","\r"); return str_replace($qian, '', $str); } //多个连续空格只保留一个 function merge_spaces($string){ return preg_replace("/\s(?=\s)/","

C语言-将输入的字符输出并将多个空格按照一个空格的方式输出

思路就是标志位,两个状态之间切换 具体代码如下 1 #include<stdio.h> 2 3 void main() 4 { 5 long nc = 0; 6 int spaceStatus = 0; 7 int c = 0; 8 while ((c = getchar()) != EOF) 9 { 10 if (c == ' ') 11 { 12 if (spaceStatus == 0) 13 { 14 spaceStatus = 1; 15 putchar(c); 16 } 17 18

字符创去除首尾空格,合并串中的多个空格为一个空格

void EraseMultiSpace(std::string &str) { bool alnumFlag = false; bool spaceFlag = false; int j=0; int j=0; for (int i=0; i<str.length(); ) { if(!isspace(str.at(i))) { str.at(j) = str.at(i); j++; alnumFlag = true; spaceFlag = false; } else { spaceFl

2016美团 模拟题 去除首尾空格,内部多个空格变成一个空格

思想:trim函数,正则表达式 repaceAll() 代码如下: public String deleteSpace(String s){ s=s.trim(); s=s.replaceAll("\\s{2,}", " "); return s; }

正则实现文本框只能输入16个数字,每4位数字后添加一个空格

<head> <meta http-equiv="x-ua-compatible" content="IE=EmulateIE7" /> <title></title> <!-- http://www.cnblogs.com/babycool --> <script src="../js/jquery-1.7.2.min.js" type="text/javascript

程序设计-----字符串中删除连续空格,只保留一个空格 数中删除连续相同的数,只保留一个数

一.问题描述 输入一个字符串,注意是可以带空格的,我们所要做的是如果字符之间有很多个连续的空格,我们只需要保留一个空格,并输出显示. 有一个类似的问题,是将一个数中连续相同的数删除掉,只保留其中一个数,如3456667,转化为34567.这个问题与字符串的问题大体上是一致的, 只是字符串限定了只有连续的空格需要处理,连续的其他字符是可以接受的,如abbbc是满足条件的,而a    bbb     ccc则要转换为a bbb ccc. 二.问题分析 在书写程序的过程中,首先的思路是以空间换取时间,