Я изучал C в течение нескольких недель, и я застрял пару дней с этим вопросом.
Я пытаюсь прочитать файл с информацией о фильмах и скопировать его в массив структур.
main(){
struct movies{
char name[30];
char director[30];
char yearOfRelease[30];
char budget[30];
char image[30];
char genre[30];
};
struct movies mvArray[100];
struct movies data;
FILE *readingText;
readingText = fopen("movies.txt", "r");
char c[150];
int lines = 0;
do{
fgets(c, 150, readingText);
if(lines % 6 == 0)
{
strcpy(data.name, c);
}
if(lines % 6 == 1)
{
strcpy(data.director, c);
}
if(lines % 6 == 3)
{
strcpy(data.budget, c);
}
if(lines % 6 == 4)
{
strcpy(data.image, c);
}
if(lines % 6 == 5)
{
strcpy(data.genre, c);
}
mvArray[lines] = data;
lines++;
}
while((fgets(c, 150, readingText) != NULL));
fclose(readingText);
}
Кажется, что операторы if работают хорошо и ловят именно ту строку, которую я хочу. Если я сделаю printf внутри оператора if, он поймает строку.
Но по какой-то причине я не могу правильно сохранить данные внутри массива структур.
Вне цикла do while, если я делаю
printf("%s", mvArray[1].name);
она выведет строку, поэтому она сохранила эту строку в правильном месте в массиве структур. Но это происходит только с первыми 2 переменными массива структур, только с именем и директором, поэтому я должен что-то упустить.
Большое спасибо и всего наилучшего.
EDIT:
Это текстовый файл, который я читаю.
Name: SomeMovie
Director: Someone
Release year: 1995
budget: 10000
Image: fasdf.jpg
Genre: Horror
Name: SomeMovie
Director: Someone
Release year: 1995
budget: 10000
Image: fasdf.jpg
Genre: Horror
Операторы if, похоже, хорошо улавливают информацию. Если я сделаю printf ("% s", c); внутри каждого оператора if будет распечатываться именно та строка, которую я хочу. Но я не могу хранить его внутри массива структур.