Я пытаюсь написать простую программу на C, которая читает определенное количество символов из файла за раз, а затем сохраняет это в переменной. Например, 10 символов одновременно.
Я пытаюсь сделать это с помощью fgets (), но он продолжает выдавать ошибку
FAILED: недопустимый ioctl для устройства, которое я не могу устранить и не могу найти после поиска некоторой информации о нем.
Я несколько раз пытался переписать свой код и прочитал документацию, но я до сих пор не могу найти корень проблемы.
Вот мой код:
Основная функция (я уже проверил аргументы, но для простоты опущен)
int main(int argc,char *argv[]) {
FILE *file;
file=check_file(argv[1]);
readCharacters(file);
return 0;
}
функция check_file
FILE * check_file(char *fileName)
{
FILE *file = fopen(fileName, "rb");
if(!file) {
perror("SENDER: File does not exists");
fclose(file);
exit(1);
}
return file;
}
Функция чтения символов
void readCharacters(FILE* fp) {
char buff[TOTALCHAR], *result;
if ((result = fgets(buffer,TOTALCHAR,fp)) != NULL)
printf("The string is %s\n", result);
else if (ferror(fp)) {
perror("FAILED");
} else {
printf("EOF was reached");
}
Если мой текстовый файл:
«Быстрая коричневая лиса перепрыгивает через ленивую собаку»
Ожидаемый результат:
First String = "Быстрый коричневый"
Вторая строка = "лиса перепрыгивает"
и т.д.
Фактический результат:
EOF был достигнут
РЕДАКТИРОВАТЬ: я обновил свой код после ответа на исходный вопрос, и оказалось, что EOF достигнут. Однако файл, в котором я читаю, определенно не пустой