gpt4 book ai didi

c - c语言如何从文件中读入数组

转载 作者:行者123 更新时间:2023-12-02 02:00:21 25 4
gpt4 key购买 nike

我有一个名为 Players.txt 的文件,其中包含

Del Piero|3|Italy|Juventus Ronaldo|0|Portugal|Real Madrit

我想将每个病房读入一个单独的数组,就像数组 players 包含
players[NUM_PLAYERS][NAME_LENGTH]={ Del Piero,Ronaldo}
以此类推其他数组,

我知道它需要使用一个名为 fgets 的函数和一些字符串函数。

这是我尝试过的;我的问题是:我的问题还有其他方法吗,比如使用一些不同的程序或字符串程序?以及如何从这个文件中获取目标数量并将它们存储到文件中

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <ctype.h>

#define NUM_PLAYERS 20
#define NAME_LENGTH 100
#define COUNTRY_NAME 20


int main (void)
{
FILE *Players;

char player_name [NUM_PLAYERS][NAME_LENGTH] = {0};
char team_name[NUM_PLAYERS][NAME_LENGTH] = {0};
char country_name[NUM_PLAYERS][COUNTRY_NAME] = {0};

char temp_buffer[NAME_LENGTH]={0};
int goals_scored[NUM_PLAYERS] = {0};

char *ptr1,*ptr2,*ptr3;
int i;

Players = fopen("Players.txt", "r");
if (Players == NULL)
{
printf("File not found.\n");
}
else
{
i=0;
while ((fgets(temp_buffer,sizeof(temp_buffer), Players) != NULL) && i < NUM_PLAYERS)

{
ptr1 = strchr(temp_buffer, '|');
strncpy(player_name[i], temp_buffer, ptr1 - temp_buffer);
printf("the name of the player is %s\n.", player_name[i]);
i ++;

}
}
fclose(Players);

return 0;
}

最佳答案

您可以尝试使用 fscanf,而不是 fgets+strchr。然后您将获得更简单的代码和更多的安全性(现在您的代码很容易溢出缓冲区,导致不可预知的结果)。

 if (fscanf(Players, " %*[^|]|%d|%*[^|]|%*s",
NAME_LENGTH-1, player_name[i],
goals_scored + i,
NAME_LENGTH-1, team_name[i],
NAME_LENGTH-1, country_name[i]) == 4) {
...
}

注意:该模式非常特定于您的数据格式,根据您的问题,我不清楚 country_name 的分隔符(如果有)是什么。然后最后一个字符串模式是通常的 %s,它首先停止在 space

关于c - c语言如何从文件中读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17553601/

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