Открыть файл с помощью результата fgets не работает

#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 , перевод строки не гарантируется.