返回值不好意思做这种问题(因为有关于互联网上这么多),但我不得不问这样的:问题的fscanf的在C
演习涉及从阅读文件与学生名单(记录包含:姓名,序号)。我已经创建的文档,并包括13条线路,但是当我写终端./a.out
,输出为13行这种类型的列表:(null) (null) (null)
的代码是:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#define EOF (-1)
#define BUF 100
typedef struct stud{
char *surname;
char *name;
char *serial;
} student;
int main(void){
FILE *fd;
int n = BUF;
int k = 0;
int i = 0;
int ret;
char *s = malloc(BUF * sizeof(char));
if((fd = fopen("registry_office_students.txt","r")) == NULL){
perror("error opening file");
return -1;
}
while(fgets(s,n,fd)!=NULL){
k++;
}
student *a = malloc(k*sizeof(student));
rewind(fd);
ret = fscanf(fd, "%s, %s, %s", a[i].surname, a[i].name, a[i].serial);
while(fscanf(fd, "%s, %s, %s", a[i].surname, a[i].name, a[i].serial) == ret){
i++;
}
for(i=0;i<k;i++){
printf("%s, %s, %s \n", a[i].surname, a[i].name, a[i].serial);
}
fclose(fd);
return 0;
}
我再次道歉并希望得到适当的回应,谢谢。
您是否仔细阅读了几次[fscanf(3)]的文档(http://man7.org/linux/man-pages/man3/fscanf.3.html)?问题是什么? – 2014-09-28 15:49:24
@JeroenvanderHooft上面的代码是有效的。它允许Carmine将该结构称为“struct stud”或“student”。 – 2014-09-28 15:53:23