Как я могу продолжить чтение из файла, используя чтение из unistd.h

Я использую Qt для проекта. Я постоянно читаю из файла с чтением из unistd.h, но как я могу это сделать? Я пытался использовать бесконечный цикл while, но мое приложение вылетало при этом.

PS Я начинающий, когда дело доходит до Qt и работы с файлами (unistd.h).

int fd;
char c;

fd = open("/home/stud/txtFile", O_RDWR);//open file
if(fd == -1)
cout << "can't open file" << endl;

read(fd, (void*)&c, 1);

if(c == '1')
//do stuff
else
//do stuff

-1

Решение

Если вы вынуждены использовать низкоуровневый метод read (), убедитесь, что перед чтением проверьте допустимый файловый дескриптор.

Ваш пример кода все еще пытается прочитать, даже если открыть не удается.

Изменить на:

fd = open("/home/stud/txtFile", O_RDWR);//open file
if(fd < 0) {
cout << "can't open file" << endl;
// potentially you may want to exit() here
}
else {
read(fd, (void*)&c, 1);
// if done with file for this pass, close it. If you need to read again
// in same program keep it open
close(fd);
}

Ваш пример кода никогда не закрывает файл после прочтения. Так что я не знаю, что вы имеете в виду под «продолжайте читать»; если вы имеете в виду, что вы открываете и читаете с этим кодом снова и снова без close (), то в конечном итоге у вас закончатся дескрипторы.

0

Другие решения


По вопросам рекламы [email protected]