#c #file #char #system-calls #fgets
#c #файл #символ #системные вызовы #fgets
Вопрос:
Я пытаюсь открыть некоторые файлы с помощью open(). Имена файлов хранятся во временном файле (по одному имени файла в каждой строке). Это код, который я использую:
char strbuf[64];
while (fgets (strbuf, sizeof(strbuf), temp))
{
printf("%sn", strbuf);
if((txt_fd = open(strbuf, O_RDWR | O_APPEND)) < 0)
{
printf("Open error!n");
exit(1);
}
}
И это вывод:
Data1.txt
Open error!
Странно то, что если я вручную установлю open() таким образом, open() будет работать.
txt_fd = open("Data1.txt", O_RDWR | O_APPEND)
Что не так с strbuf?
Заранее спасибо.
Комментарии:
1. необходимо удалить последнюю новую строку.
2. Выведите символы strbuf как целое число, и вы увидите, например, ‘ n’ в конце.
3.
char *p=strchr(strbuf, 'n');if(p) *p = '';
4. верно? да. или
while(fscanf(temp, " c[^n]", strbuf)==1)
5. @nightshade , перевод строки не гарантируется.