可以帮我改一下这个代码吗?它一直报错

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <float.h>
#define T 15548
struct people{
int n;//年
int y;// 月
int r;//日
int x;//性别
int shu;//人数

}people1[T];

//读文件
void readfile(struct people people1[5]) {
FILE *fp = NULL;
char buffer[15548];
char lie;
char
hang;
if((fp = fopen("d:\births.csv", "r")) == NULL){

}else{
fseek(fp, 16L, SEEK_SET);
 while((lie= fgets(buffer, 5, fp))!=NULL){
                printf("%s ", lie);
        while ((hang = fgets(buffer, 15548, fp))!= NULL){
            printf("%s ", hang);
        }
    }
    
     fp = NULL;

fclose(fp);

    } 

}
void tongji(struct people1*[T]){//统计1960到1970男生人数,女生人数以及总人数
int M=0;
int F=0;
int G=0;
int All=0;
for(int i=1;i<T;i++){
if(people1[i].n>=1960&&people1[i].n<=1970&&people1[i].x==M){
M++;
}if(people1[i].n>=1970&&people1[i].n<=1980&&people1[i].x==M){
M++;
}if(people1[i].n>=1980&&people1[i].n<=1990&&people1[i].x==M){
M++;
}if(people1[i].n>=1990&&people1[i].n<=2000&&people1[i].x==M){
M++;
}if(people1[i].n>=2000&&people1[i].n<=2008&&people1[i].x==M){
M++;
}
if(people1[i].n>=1960&&people1[i].n<=1970&&people1[i].x==F){
F++;
}if(people1[i].n>=1970&&people1[i].n<=1980&&people1[i].x==F){
F++;
}if(people1[i].n>=1980&&people1[i].n<=1990&&people1[i].x==F){
F++;
}if(people1[i].n>=1990&&people1[i].n<=2000&&people1[i].x==F){
F++;
}if(people1[i].n>=2000&&people1[i].n<=2008&&people1[i].x==F){
F++;
}
if(people1[i].n>=1960&&people1[i].n<=1970&&people1[i].x==G){
G++;
}if(people1[i].n>=1970&&people1[i].n<=1980&&people1[i].x==G){
G++;
}if(people1[i].n>=1980&&people1[i].n<=1990&&people1[i].x==G){
G++;
}if(people1[i].n>=1990&&people1[i].n<=2000&&people1[i].x==G){
G++;
}if(people1[i].n>=2000&&people1[i].n<=2008&&people1[i].x==G){
G++;
}
}
printf("女生人数有%d个\n男生人数有%d个\n男生减女生人数有%d个\n", M, F,G);

    }
    

int main(){
readfile(people1);
// printf("是:\n");