Данные из текстового файла читаются как 0 / Null - PullRequest
0 голосов
/ 10 мая 2018

Я пишу программу на C для чтения данных из 2 текстовых файлов и объединения их в 1 текстовый файл.При чтении текстового файла я печатаю значения, чтобы убедиться, что получаю правильные значения, но все, что появляется, это либо 0, либо ноль.

Вот код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define str_len 100

//Question 2A
typedef struct {
  int atmNum;
  char name[str_len];
  char symbol[str_len];
  float atmWeight;
} PeriodocElement;

void SortedMergedFile (FILE *file1, FILE *file2);

int main () {
  FILE *file1;
  file1 = fopen("1.txt", "r");
  FILE *file2;
  file2 = fopen("2.txt", "r");

  if (file1 == NULL) {
    printf("FILE 1 DOES NOT EXIST\n");
  }
  if (file2 == NULL) {
    printf("FILE 2 DOES NOT EXIST\n");
  }
  else {
    SortedMergedFile(file1, file2);
  }
}

void SortedMergedFile (FILE *file1, FILE *file2) {
  PeriodocElement elements [150];
  int i = 0;

  while (i != 4) {
    fscanf(file1, "%d  %s  %s %f", &elements[i].atmNum, elements[i].name, elements[i].symbol, &elements[i].atmWeight);
    i++;

    printf("\n%d %s %s %4.2f", elements[i].atmNum, elements[i].name, elements[i].symbol, elements[i].atmWeight);
  }
}

А вот и текстовый файл:

08  Serium  Se 40.08
20  Sodium  Na 22.99
45  gatium  Ga 23.90
56  Manion  Ma 45.99

Если кто-то может заметить что-то, что я делаю неправильно, было бы очень признательно.

1 Ответ

0 голосов
/ 10 мая 2018
  1. Вы читаете компоненты element[i].
  2. Затем вы увеличиваете i.
  3. Затем вы печатаете компоненты element[i] (который i теперь на единицу больше), и эти , конечно, еще не инициализированы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...