gpt4 book ai didi

c - 在循环中使用 fscanf() 的问题

转载 作者:行者123 更新时间:2023-11-30 17:43:07 26 4
gpt4 key购买 nike

希望这不是以前有人问过的问题,我已经浏览了以前提出的问题,但似乎没有一个问题完全适用于我的问题。

我正在开发的从文件中读取文本行的程序遇到了一些问题。我试图读取的文件的格式是:

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 和第一组学生信息之间有一个新行。我对编程相当陌生,您提供的任何帮助都会非常有帮助!

谢谢。 :)

最佳答案

I've looked through previously asked questions but none of them seemed to quite apply to my problem.

这实际上是数十个相同问题的完全相同的重复。您尚未为指针 readStudents[i].firstName 分配内存,因此它们未初始化,并且访问它们指向的内存会导致未定义的行为,表现为崩溃。您需要使用数组作为结构成员,或者malloc()动态占用内存。

关于c - 在循环中使用 fscanf() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20304760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com