Объедините два файла и поместите данные рядом друг с другом в C

#c

#c

Вопрос:

Этот код представляет собой комбинацию двух текстовых файлов

 #include <stdio.h>
#include <stdlib.h>

int main() {
  FILE *movieyear;
  char year[90];
  movieyear = fopen("Lecture 07 - Movie Data - Year.txt", "r");
  FILE *moviedata;
  char data[90];
  moviedata = fopen("Lecture 07 - Movie Data - Releases.txt", "r");
  FILE *NEWdata;
  char DData;
  NEWdata = fopen("Movieinfo.txt", "w");
  if (movieyear == NULL || moviedata == NULL) {
    printf("Error opening filen");
    return (-1);
  }
  if (NEWdata == NULL) {
    printf("Error opening filen");
    return (-1);
  }

  while ((DData = fgetc(movieyear)) != EOF) {
    fputc(DData, NEWdata);
  }
  while ((DData = fgetc(moviedata)) != EOF) {
    fputc(DData, NEWdata);
  }

  fclose(movieyear);
  fclose(moviedata);
  fclose(NEWdata);
  return 0;
}
 

Этот текстовый файл записывает:

 2015
2019
2009
2018
2018
1997
2015
2012
2017
2018
Star Wars: Episode VII - The Force Awakens
Avengers: Endgame
Avatar
Black Panther
Avengers: Infinity War
Titanic
Jurassic World
Marvel's The Avengers
Star Wars: Episode VIII - The Last Jedi
Incredibles 2
 

Мой желаемый результат:

 Star Wars: Episode VII - The Force Awakens 
2015
Avengers: Endgame 
2019
Avatar 
2009
Black Panther 
2018
Avengers: Infinity War 
2018
Titanic 
1997
Jurassic World 
2015
Marvel's The Avengers 
2012
Star Wars: Episode VIII - The Last Jedi 
2017
Incredibles 2 
2018
 

Комментарии:

1. Исправьте отступ в коде.

2. Есть ли ошибка или это больше помогает вам кодировать?

3. @Will: Это логическая ошибка.

4. Шаг 1: char DData; —> int DData;

5. @chux потратил время и усилия на то, чтобы переформатировать ваш код для вас. Заметили, насколько легче это читать? Это должно быть первое , что вы делаете, а не последнее.

Ответ №1:

Это

 while((DData = fgetc(movieyear)) != EOF){
    fputc(DData,NEWdata);
}

while((DData = fgetc(moviedata)) != EOF){
    fputc(DData,NEWdata);
}
 

Будет довольно четко выведены сначала все годы, а затем все названия.

Что вам нужно, так это один цикл, который будет выводить как год, так и название одновременно.

Комментарии:

1. Я пытался это совместить, но у меня все еще возникают проблемы. Я не знаю, где это можно совместить

2. Что ж, вы могли бы попробовать заполнить эти годовые и информационные массивы и использовать их. На данный момент они просто лежат там неиспользованными.

3. Должен ли он заменить DData соответствующими массивами?