【发布时间】:2013-11-30 19:36:47
【问题描述】:
希望这不是以前有人问过的问题,我已经查看了以前提出的问题,但似乎没有一个问题完全适用于我的问题。
我正在使用的程序从文件中读取文本行时遇到了一些问题。我要读取的文件格式是:
10
first_name last_name long_int_number
first_name last_name long_int_number
first_name last_name long_int_number
first_name last_name long_int_number
first_name last_name long_int_number
first_name last_name long_int_number
first_name last_name long_int_number
first_name last_name long_int_number
first_name last_name long_int_number
first_name last_name long_int_number
(您会注意到 10 也代表列表中的项目数。)
我写的代码是:
struct student
{
long studentNumber;
char *firstName;
char *lastName;
};
struct student *readFile(char *fileName, int *numOfStudents)
{
struct student readStudents[10];
FILE *fp;
int i;
char *buff;
fp=fopen(fileName,"r");
fscanf(fp,"%d",numOfStudents);
for (i=0;i<*numOfStudents;i++)
{
fscanf(fp,"%s",readStudents[i].firstName);
//printf("%s\n",readStudents[i].firstName);
fscanf(fp,"%s ",readStudents[i].lastName);
//printf("%s\n",readStudents[i].lastName);
fscanf(fp,"%ld",&readStudents[i].studentNumber);
//printf("%ld\n",readStudents[i].studentNumber);
}
fclose(fp);
/*the remaining code*/
}
我已经注释掉了我用来查看错误发生位置的 printf 语句。基本上,它正确读取 numOfStudents 然后正确执行第一个循环,但是在此之后程序崩溃。我不确定为什么会发生这种情况。最初我认为这是因为它在读取新行时遇到问题,但这可能不是问题,因为在 10 和第一组学生信息之间有一个新行。我对编程相当陌生,您可以提供的任何帮助都会非常有帮助!
谢谢。 :)
【问题讨论】:
-
看起来你在写之前没有为
firstname或lastname分配空间 -
感谢您的帮助! :)