首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问关于C primer puls的一道课后题

2013-02-02 
请教关于C primer puls的一道课后题第八章的一道课后题,把输入作为字符流读取,直到遇到EOF,令程序打印每个

请教关于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");
    }
}

[解决办法]
在output函数内的i声名前加static
static int i = 0;
[解决办法]

引用:
在output函数内的i声名前加static
static int i = 0;

++
不定义为static,每次进入的时候,都会重置i为0

热点排行