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

2025-03-06 12:41:05
推荐回答(2个)
回答1:

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; 
}

回答2:

int i=0;
请注意定义变量的位置,在函数开始处
你放外面就是全局变量,可以
你放里面请放在函数开头,这样编译不通过