Не могу найти исходный файл в "/getc.c" eclipse c ubuntu - PullRequest
0 голосов
/ 10 марта 2019

только что установил Eclipse на моем Linux и пытается работать с файлами. Я хотел использовать функцию fgetc, но кажется, что она не работает .. во время отладки: даже если я использую шаг над его сокрушением, и пока он запускается, он ничего не делает. это происходит также для каждой функции, связанной с файлами, такими как fscanf, fgets и т.д ..

сообщение об ошибке:

Can't find a source file at "/build/glibc-OTsEL5/glibc-2.27/libio/getc.c" Locate the file or edit the source lookup path to include its location.

есть идеи?

Спасибо за продвинутый

и это мой код:

#include <stdio.h>
#include <stdlib.h>
int main(){
    func();
return 0;
}

void func(){
  int ch;
  int fd = open("out.txt", O_RDONLY);
  if(fd < 0)
          perror("fd");
  ch = fgetc(fd);
  printf("%d",ch);
}

1 Ответ

2 голосов
/ 10 марта 2019

Сообщение об ошибке исходит от отладчика.Это указывает на то, что тот, кто создавал glibc для вашей системы, не добавил исходные файлы к информации об отладке.В результате, пошаговое выполнение функций системной библиотеки, таких как fgetc, очень запутанно.Но это не зависит от вашей реальной проблемы.

Вы не можете смешивать функции файлового дескриптора, такие как open, с функциями файлового потока, такими как fgetc.Компилятор выведет предупреждение о несоответствии типов;Вы действительно не должны игнорировать это.

Что-то вроде этого должно исправить ошибку типа:

  File *fp = fopen("out.txt", "r");
  if (fp == NULL) {
    perror("fopen");
    return 1;
  }
  ch = fgetc(fp);

Если вы хотите продолжать использовать небуферизованный ввод / вывод и open, вам придетсяиспользуйте функцию read вместо fgetc для чтения байтов.

...