Использование fgets и put для чтения и печати файла не работает - PullRequest
0 голосов
/ 13 февраля 2019

Я написал этот кусок, если код ниже, чтобы прочитать текстовый файл, который говорит: «Это были лучшие времена, это были худшие времена, это был век мудрости».

Когда я запускаю свой кодкажется, ничего не происходит.Что-нибудь, что вы можете заметить в моем коде, может вызвать эту проблему?(Решение строится без ошибок или предупреждений тоже).Спасибо:)

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

int main(void)
{
FILE * fPointer;
fPointer = fopen("exercise1.txt","r");
char singleline[150];

while (!feof(fPointer))
{
    fgets(singleline, 150, fPointer);
    puts(singleline);
}

fclose(fPointer);
return 0;

}

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019
int i=0;
FILE *file;
file = fopen("code.txt","r"); //lecture d 'un fichier
char codesource[500] = {0};
if (file == NULL) {
  printf("Erreur d'ouverture");
  return 0;
} 
else {
  while((codesource [i] = getc(file))!= EOF) {
    //printf("%c", codesource [i]);
    i++;
  }
}
0 голосов
/ 13 февраля 2019

Если я изменю вашу программу, чтобы учесть замечания Weather Vane, и я заменю ваши ставит на fputs , чтобы не удваивать \ n ( fgets не удаляйте \ n, а ставит , добавляет \ n):

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

int main()
{
  FILE * fPointer = fopen("exercise1.txt","r");

  if (fPointer == NULL)
    puts("cannot open exercise1.txt");
  else {
    char singleline[150];

    while (fgets(singleline, sizeof(singleline), fPointer))
      fputs(singleline, stdout);

    fclose(fPointer);
  }

  return 0;
}

Компиляция и выполнение:

/tmp % gcc -pedantic -Wextra c.c
/tmp % cp c.c exercise1.txt
/tmp % ./a.out
#include<stdio.h>
#include<stdlib.h>

int main()
{
  FILE * fPointer = fopen("exercise1.txt","r");

  if (fPointer == NULL)
    puts("cannot open exercise1.txt");
  else {
    char singleline[150];

    while (fgets(singleline, sizeof(singleline), fPointer))
      fputs(singleline, stdout);

    fclose(fPointer);
  }

  return 0;
}
/tmp % \rm exercise1.txt 
/tmp % ./a.out
cannot open exercise1.txt
...