gpt4 book ai didi

c - 如何从 .t​​xt 文件读取文本,然后将其存储在记录(数据结构)中?

转载 作者:行者123 更新时间:2023-11-30 16:19:35 26 4
gpt4 key购买 nike

我有一个 .txt 文件,每一行都包含:StudentID、firstName、lastName 和分数。我想用 C 编写一个程序,读取 .txt 文件并将每个学生的所有信息存储在记录(数据结构)中。问题是我不知道我必须使用的条件才能单独读取每个不同的元素(StudentID、firstName等),因为它们只是用空格“”分隔,然后还有我遇到的问题更改线路以存储下一个学生信息...有帮助吗?

最佳答案

以下建议的代码片段应该足以指导您编写应用程序。

要编译/链接以下代码,您将需要头文件:

 #include <stdio.h>  // fgets(), fopen(), fclose(), perror()
#include <stdlib.h> // exit(), EXIT_FAILURE, strtof()
#include <string.h> // strtok(), strcpy(), strtol()

关于;

 StudentID , firstName, lastName and score.

因此每个学生需要输入 4 个字段。

每个字段有多长?

对尺寸进行合理的猜测:

 StudentID is unsigned long integer 
FirstName is char array, max 30 characters
LastName is char array, max 30 characters
Score is float

因此,容纳一名学生的结构将是:

 struct student
{
size_t StudentID;
char FirstName[30];
char LastName[30];
float Score;
};

假设输入文件是多行文本,那么读取一行

 // open the file for reading
if( !(fp = fopen( "studentFile.txt", "r" ) ) )
{
perror( "fopen for student input file failed" );
exit( EXIT_FAILURE );
}


struct student *students = NULL;
size_t studentCount = 0;

char buffer[128];
while( fgets( buffer, sizeof( buffer ), fp ) )
{

然后每一行必须分解为相关字段并放入结构体的实例中

     // increase number of students in array by 1
struct student * temp = realloc( students, (studentCount+1) * sizeof( struct student ) );
if( !temp )
{
perror( "realloc for new student data failed:" )
free( students );
exit( EXIT_FAILURE );
}

students = temp;

char *token = strtok( buffer, " ");
if( token )
{
students[ studentCount ]->StudentID = (size_t)strtol( token, 10 );

if( (token = strtok( NULL, " " ) )
{
strncpy( students[ studentCount ]->FirstName, token. sizeof( student.FirstName) )l

if( (token = strtok( NULL, " " ) )
{
strncpy( students[ studentCount ]->LastName, token, sizeof( student.LastName );

if( (token = strtok( NULL, " " ) )
{
students[ studentCount ]->Score = strtof( token, NULL );
}
}
}
}
studentCount++;
}

然后输入文件中的所有学生信息行现在都是struct Student数组中的实例

如果您需要更多帮助,请在此答案下方发布任何澄清请求等,作为评论

关于c - 如何从 .t​​xt 文件读取文本,然后将其存储在记录(数据结构)中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55593304/

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