Обработка текстового файла и структур данных - PullRequest
0 голосов
/ 25 августа 2018

Я нашел это упражнение, в котором мне нужно было создать структуры данных, прочитать некоторые входные данные, сохранить входные данные в «подходящей» структуре данных и затем распечатать их в текстовом файле.Мне удалось создать программу, но я не совсем уверен, что сделал это правильно, так как я новичок в структурах данных, хранит ли она все входные данные в структуре данных перед печатью?

Последний вопрос: яс нетерпением ждал добавления функции для заказа списка отелей по количеству звезд, поэтому, если у отеля есть 5 звезд, он будет в верхней части списка.Возможно ли это сделать?Могу ли я сделать это с массивами?

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

struct inputs {
   char nome[30];
   char via[30]; 
   char stars[30];
   int num;
};

int main(void)
{  

   struct inputs inputs = {"", "", ""};

   FILE *cfPtr; // cfPtr = clients.txt file pointer   
   // fopen opens file. Exit program if unable to create file 
   if ((cfPtr = fopen("clients.txt", "w")) == NULL) {
      puts("File could not be opened");
   } 
   else { 
      puts("Enter the account, name, and balance.");
      puts("Enter EOF to end input.");
      printf("%s", "? ");


      //scanf("%[^\n]s%[^\n]s%[^\n]s", inputs.via, inputs.nome, inputs.stars);



      fgets(inputs.nome, 30, stdin);
      inputs.nome[strcspn(inputs.nome,"\n")] = '\0';
      fgets(inputs.via, 30, stdin);
      inputs.via[strcspn(inputs.via,"\n")] = '\0';
      fgets(inputs.stars, 30, stdin);
      inputs.stars[strcspn(inputs.stars,"\n")] = '\0';

      inputs.num = strlen(inputs.stars);


      //printf("%s%s%s", inputs.nome, inputs.via, inputs.stars);

      // write account, name and balance into file with fprintf
      while (!feof(stdin)) {
           fprintf(cfPtr, "%s; %s; %s; %d\n", inputs.nome, inputs.via, inputs.stars, inputs.num);

           /*scanf("%[^\n]s", inputs.via);
           scanf("%[^\n]s", inputs.nome);
           scanf("%[^\n]s", inputs.stars);*/
           fgets(inputs.nome, 30, stdin);
           inputs.nome[strcspn(inputs.nome,"\n")] = '\0';
           fgets(inputs.via, 30, stdin);
           inputs.via[strcspn(inputs.via,"\n")] = '\0';
           fgets(inputs.stars, 30, stdin);
           inputs.stars[strcspn(inputs.stars,"\n")] = '\0';
           inputs.num = strlen(inputs.stars);

      }

      fclose(cfPtr); // fclose closes file   
   } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...