请教关于C primer puls的一道课后题
第八章的一道课后题,把输入作为字符流读取,直到遇到EOF,令程序打印每个字符及其ASCII码,非打印字符换行符和制表符打印为\n,\t,其他打印为如ctrl+A打印为^A的形式,每行打印十对值。我的程序是这样的,我之在ouput函数中有加一个计数器,每当打印一对值,计数器加一,若为十,打印换行符,可是没有起到作用,请问是错在哪里了?另外,这段程序不足的地方还请帮忙指出,谢谢了
#include<stdio.h>
#include<ctype.h>
void output(int ch);
int main(void)
{
int ch;
printf("请输入字符!\n");
while((ch=getchar())!=EOF) //检测到EOF即跳出循环
output(ch);
getch();
return 0;
}
void output(int ch)
{
int i=0;
if(isspace(ch)) //处理非打印字符
{
switch(ch)
{
case '\n':
printf("\\n:%d ",ch);
i++;
break;
case '\t':
printf("\\t:%d ",ch);
i++;
break;
case ' ':
printf("SPACE:%d ",ch);
i++;
break;
}
}
else if(isupper(ch+64)&&ch<' ')
{
printf("^%c:%d ",ch+64,ch);
i++;
}
else
{
printf("%c:%d ",ch,ch);
i++;
}
if(i==10)
{
i=0;
printf("\n");
}
}
[ 本帖最后由 易晋 于 2013-1-28 21:38 编辑 ]