У меня возникли проблемы с назначением, это связано с чтением из файлов в структуры и я смущен тем, как это сделать здесь, это функция с параметрами, которые я должен использовать.Чтение из нескольких файлов в структуру
// This function will read in size struct players from filename and add these
// the players array. The function will use index to know where to start
// writing the players to in the array.
// Parameters
//
// filename – The name of the input file
// players – a pointer to the array of player structures
// index – The index of the array to start placing players into
// size – The number of players in the input file
// Return - Nothing
void read_from_file(char* filename, Player* players, int index, int size);
Это функция, которую я должен использовать для чтения в данных из 3 различных файлов, которые выглядят, как например:
Andrew Jackson 129 33 38 30 506
Jeremy Warden 25 24 3 9 493
Jared Welch 130 1 43 27 422
Brandon Splitter 138 38 40 7 587
Joe Gwilliams 150 23 30 25 498
Ali Mohammed 119 43 13 6 598
Dheeraj Johnson 124 79 59 36 506
Bill Clinton 121 65 12 26 449
Jesse James 87 58 8 5 464
John Doe 129 100 0 12 548
я должен прочитать в 3-х файлах, которые все имеют 10 игроков в них в общей сложности 30 мне нужно читать в структурах. Я не очень далеко знаю, но я очень смущен тем, что делать и как подходить к этому, любая помощь будет очень оценена! Ниже у меня есть то, что я уже сделал. Пожалуйста помоги!! Благодаря
//Brady Webb
//lab D
//HW1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct player
{
char Fname[25];
char Lname[25];
int Singles;
int Doubles;
int Triples;
int Homeruns;
int At_Bats;
float Slugging_Percentage;
} Player;
void read_from_file(char* filename, Player* players, int index, int size);
int main(int argc, char* argv[])
{
int size= atoi(*(argv+1));
char* file1 = *(argv+2);
char* file2 = *(argv+3);
char* file3 = *(argv+4);
if (argc<6 || argc>6)
{
printf("Incorrect command line arguments\n");
return 0;
}
return 0;
}
void read_from_file(char*filename, Player* players, int index, int size)
{
FILE *ptr;
int i=0;
if ((ptr=fopen(filename, "r")) == NULL)
{
return 0;
}
while (ptr != EOF)
{
}
}
Как насчет 'argv + 5'? в чем смысл значения, полученного от 'argv + 1'? Эта строка: 'if (argc <6 || argc> 6) будет намного понятнее:' if (argc! = 6) ' – user3629249
сообщения об ошибках должны выводиться в' stderr', а не 'stdout'.Следовательно, эта строка: 'printf (« Неверные аргументы командной строки \ n »);' лучше писать как: 'fprintf (stderr,« Неверные аргументы командной строки \ n »);' – user3629249
в действительности, чтобы избежать доступа к памяти, не входит в программу, проверьте значение в 'argc' FIRST и только если значение valid, то извлеките отдельные аргументы. – user3629249