Проверка на EOF в файле в C? - PullRequest
0 голосов
/ 26 марта 2020

, поэтому я пытаюсь прочитать файл с различными университетскими именами с ноутбуками и другой информацией в c, а затем распечатать их на экране с расчетной стоимостью / ГБ оперативной памяти, но у меня возникают проблемы с проверкой EOF. Я попытался fscanf, но это убрало первый символ моей первой строки, и теперь я пытаюсь fgets, но это убирает первую строку файла. Мне интересно, как я могу избежать любого из них, все еще проверяя EOF. Спасибо.

#include <stdio.h>

int main() {

  FILE *text; //Defining file pointer
  char end[100]; //EOF check

  //Headers
  char name[20] = "University"; 
  char lap[20] = "Laptop"; 
  char ram_[20] = "Ram";
  char gb_[20] = "Storage";
  char price_[20] = "Price";
  char costram_[20] = "Cost/Gb of ram";

  int ram;
  int gb;
  float price;
  float costram; //Cost/gb of ram

  printf("\n%10s %12s %8s %10s %12s %16s\n", name, lap, ram_, gb_, price_, costram_);


  text = fopen("text.txt", "r");

  //If file cannot be opened
  if (text == NULL){
    printf("Error opening file");
  }
  //File is opened
  else{
    //fscanf took away the first letter in my first string since it scanned it so I used fgets to compare with NULL instead 
    while (fgets(end, 100, text) != NULL){
        fscanf(text, "%s%s%d%d%f", name, lap, &ram, &gb, &price);
        costram = price / ram;
        printf("\n%10s %12s %6dgb %8dgb %12.2f %12.2f", name, lap, ram, gb, price, costram);
      }
    }
  return 0;
}

Повторная ссылка: https://repl.it/@Michael2022 / Назначение оборудования

...