返回值不好意思做這種問題(因爲有關於互聯網上這麼多),但我不得不問這樣的:問題的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