gpt4 book ai didi

c - 将文本文件读入结构数组 C

转载 作者:太空宇宙 更新时间:2023-11-04 00:00:49 24 4
gpt4 key购买 nike

我一直试图将这个文本文件读入结构数组。这是文本中的几行。

A|Boston Red Sox|Fenway Park|4 Yawkey Way|Boston|MA|02215|(617) 267-9440|redsox.com
N|St. Louis Cardinals|Busch Stadium|700 Clark Street|St. Louis|MO|63102|(314) 345-9600|cardinals.com

这是结构数组。我修改了文本文件,使其仅包含联赛和球队名称,以便更轻松地测试更改。

#define LEN_LINE 80
#define LEN_NAME 30
#define MAX_LINES 60
#define LEAGUE_NAME 5

typedef struct
{
char leagueName[LEAGUE_NAME + 1];
char teamName[LEN_NAME + 1];


} team_t;

这就是问题所在。我已经尝试实现 strncpy(),尽管作为初学者,在这种情况下很难正确使用该函数。

FILE * filePtr;
int index, count;
char line[LEN_LINE + 1];
team_t teams[MAX_LINES];
filePtr = fopen("MLBteams.txt", "r");
if(filePtr == NULL)
{
printf("Unable to open file.\n");
}
else
{
index = 0;
while(index<MAX_LINES && fgets(line, LEN_LINE, filePtr))
{
if(2 == sscanf(line,"%s %s", teams[index].leagueName, teams[index].teamName)

)
{
index++;
}
}
fclose(filePtr);

我查看了其他线程,尽管它们只是让我感到困惑。

最佳答案

根据您的文本文件内容示例,您有一个分隔符 |符号(A|波士顿红袜队)。你需要把它放在 sscanf:

if(2 == sscanf(line,"%s|%s", teams[index].leagueName, teams[index].teamName))
{
index++;
}

好的。由于字符串中有空格,因此您可以手动解析它并不难。而不是代码 abow 这样做:

char *league_p = strchr(line,'|');
int len = league_p - line;
char *league = calloc(len, 1);
memcpy(league,line,len - 1);
league_p++;
char *team_p = strchr(league_p,'|');
len = team_p - league_p;
char *team = calloc(len, 1);
memcpy(team,league_p,len - 1);

这样你总是会得到前两个值拆分

关于c - 将文本文件读入结构数组 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405282/

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