为啥同样一段代码,在g++下AC了,c下面就是WA?求解

题目截图:

图片说明

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int number=0;
    scanf("%d", &number);
    char id[34];
    while( number-- ) {
        id[34]=0;
        scanf("%s", id);
        printf("He/She is from ");
        if(id[0]=='3'&&id[1]=='3') printf("Zhejiang");
        else if(id[0]=='8'&&id[1]=='1') printf("Hong Kong");
        else if(id[0]=='8'&&id[1]=='2') printf("Macao");
        else if(id[0]=='1') printf("Beijing");
        else if(id[0]=='2') printf("Liaoning");
        else if(id[0]=='3') printf("Shanghai");
        else if(id[0]=='5') printf("Tibet");
        else if(id[0]=='7') printf("Taiwan");
        printf(",and his/her birthday is on ");
        printf("%c%c,%c%c,%c%c%c%c based on the table.\n",id[10],id[11],id[12],id[13],id[6],id[7],id[8],id[9]);
    }
    return 0;
}

这傻瓜解法放这儿怪不好意思的……
反正就是在g++下通过了,但是我选c他就是wrong answer,为什么呀,有没有朋友帮忙解答一下,谢谢

fflush(stdin);
scanf("%s", id);
这样写看看

id[34]=0;
这个越界了
id[33]='\0'; 或者 char id[35];