归并多个空格为一个,把制表符换成\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