C语言全局变量和局部变量问题

intmain(void){chars[20],a,c[3];FILE*fp;scanf("%s",s);fp=fopen(s,"r");if(!fp){printf("... int main(void){
char s[20], a, c[3];
FILE * fp; scanf("%s",s); fp=fopen(s,"r"); if(!fp){ printf("open error\n"); return 1; }

c[2]='\0';
while((a=fgetc(fp))!=EOF){
int i=0;
if(a&0x80){
c[i++]=a;
if(i==2){
printf("%s 是汉字\n",c);
i=0;
}
}
else i=0;
}
getchar();
getchar();
return 0;
}

为什么把i放在main外可以按照期望运行,而这样不行?
展开
 我来答
ayktx
2013-07-05 · TA获得超过668个赞
知道小有建树答主
回答量:946
采纳率:33%
帮助的人:417万
展开全部
int main(void){
    char s[20], a, c[3];
    FILE * fp; scanf("%s",s); fp=fopen(s,"r"); if(!fp){  printf("open error\n");  return 1; }
     
    c[2]='\0';
    while((a=fgetc(fp))!=EOF){
        int i=0;   // 在 while 循环中, 每次循环都会将i的值置为0. 
                    // 解决1: 将i的定义放到while 前面 (推荐)
                    // 解决2: 用静态变量 static int i = 0;
        if(a&0x80){   
            c[i++]=a;     
            if(i==2){    
                printf("%s 是汉字\n",c);    
                i=0;   
            }  
        }  
        else i=0;       
    }     
    getchar(); 
    getchar(); 
    return 0; 
}
cqpcy
2013-07-05 · TA获得超过658个赞
知道小有建树答主
回答量:746
采纳率:66%
帮助的人:365万
展开全部
int i=0;
请注意定义变量的位置,在函数开始处
你放外面就是全局变量,可以
你放里面请放在函数开头,这样编译不通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式