input函数的问题

int input(char *in,struct STU *ps)
{
	FILE *fp;
	int i;
	if((fp=fopen(in,"r"))==NULL)
	{
		puts("未找到文件!\n");
		exit(1);
	}
	i=1;
	while(!feof(fp))
	{
		fscanf(fp,iin,ps->id,ps->name,ps->zhuanye,&ps->sc_1,&ps->sc_2,&ps->sc_3,&ps->sc_4,&ps->sc_5);
		i++;
		ps++;
	}
	fclose(fp);
	return i;
}

这段函数是把文件里的数据然后放进程序的

(main函数里面写的是    NUM==input("stu.txt",stu);)

 

这部分是文件

但是一运行就会自动退出,求教 

input()函数这么写,供参考:

int input(char *in,struct STU *ps)
{
    FILE *fp;
    int i=0;
    if((fp=fopen(in,"r"))==NULL)
    {
       	puts("未找到文件!\n");
       	exit(1);
    }
    while(1){
      if(fscanf(fp,"%s %s %s %d %d %d %d %d\n",ps[i]->id,ps->name,ps[i]->zhuanye,&ps[i]->sc_1,
                                      &ps[i]->sc_2,&ps[i]->sc_3,&ps[i]->sc_4,&ps[i]->sc_5)!=8) break;
      i++;
    }
    fclose(fp);
    return i;
}

 

(main函数里面写的是    NUM==input("stu.txt",stu);),这里用=就好了,是赋值,不是判断。

fscanf(fp,iin,ps->id,ps->name,ps->zhuanye,&ps->sc_1,&ps->sc_2,&ps->sc_3,&ps->sc_4,&ps->sc_5);这里的iin是哪来的?看文件格式这句应该这样写:fscanf(fp,"%s %s %s %d %d %d %d %d\n",ps->id,ps->name,ps->zhuanye,&ps->sc_1,&ps->sc_2,&ps->sc_3,&ps->sc_4,&ps->sc_5);

学号id还是int型,那句相应改下:if(fscanf(fp,"%d %s %s %d %d %d %d %d\n",&ps[i]->id,ps->name,ps[i]->zhuanye,&ps[i]->sc_1,
                                                                                                                              &ps[i]->sc_2,&ps[i]->sc_3,&ps[i]->sc_4,&ps[i]->sc_5)!=8) break;