归并多个空格为一个,把制表符换成\t、把回退符换成\b、把反斜杠换成\\


程序运行时输入abc(之后几个空格),输出结果光标不是停在abc+一个空格之后呢?

#include<stdio.h>

#define NONBLANK 'a'

void main()
{
 int c;

 for(;(c = getchar()) != EOF;)  
 {
  if(c != ' ')
    putchar(c);
   else
   {
    for(;(c = getchar()) == ' ' && c != EOF;)
       ;      
     if(c != EOF)
     { 
      printf(" ");
      putchar(c);
     }
     else 
      printf(" ");
   }      
 }
}


还有个:
题:编写一个程序,把它的输入复制到输出,并在此过程中把制表符换成\t、把回退符换成\b、把反斜杠换成\\

#include<stdio.h>

void main()
{
 int  c;

 while((c = getchar()) != EOF)
 {
  if(c == '\t')
   printf("\\t");
  if(c == '\b')
   printf("\\b");
  if(c == '\\')
   printf("\\\\");                
  putchar(c);
 }
}

为什么printf("\\\\")并不是如想象中那样输出\\而是\\\,不是前两个\\转换成一个\,后两个\\转换成\吗?  还有这么在键盘上输入回退符啊?比如说输入制表符按tab键。


ps:
(1)不能再定义变量的时候连等

(2)判断是不是EOF  ==勿写成 =

(3)if(c == ' ')                 //用于统计空格
'\0'是字符结束标志,表示一个字符串的结束,就等于十进制的0,十六进制的0x00

posted @ 2011-12-18 23:06  wust.zjf  阅读(1300)  评论(9编辑  收藏  举报