要求
编写一个程序,在遇到 EOF 之前,把输入作为字符流读取。程序要打印每个输入的字符及其相应的ASCII十进制值。
注意:
在ASCII序列中,空格字符(ascii值为32)前面的字符都是非打印字符,要特殊处理这些字符。如果非打印字符是换行符(10)或制表符(9),则分别打印\n或\t。否则,使用控制字符表示法。
例如,ASCII的1是Ctrl+A,可显示为^A。注意,A的ASCII值是Ctrl+A的值加上64。其他非打印字符也有类似的关系。
除每次遇到换行符打印新的一行之外,每行打印10对值。(注意:不同的操作系统其控制字符可能不同。)
我的程序
#include<stdio.h>
int main(void)
{
int i = 0;
int ch; //ch 为int型,能正确获得EOF值
while ((ch = getchar()) != EOF)
{
if ('\n' == ch)
{
printf("\\n(%d)\n", ch);
i = 0; //打印一次换行符,打印对数置零
}
else if ('\t' == ch)
printf("\\t(%d)", ch);
else if (ch > -1 && ch < 32)
printf("^%c", ch + 64);
else
printf("%c(%d)", ch, ch);
if (0 == i % 10 && 0 != i) //控制每行打印10对
putchar('\n');
i++;
}
return 0;
}