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外可以按照期望运行,而这样不行? 展开
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外可以按照期望运行,而这样不行? 展开
展开全部
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询