Удалить символ "\n" из строки с прочитанным

Я должен сделать проект, но я столкнулся с проблемой. Я получаю строку из чтения, но когда я вижу, какие данные находятся в моем буфере, в конце файла отображается "\n". Однако мне не нужно использовать его после, чтобы иметь дело с аргументом в моей функции.

Мой код:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>

int main() 
{

char buf[100];
read(1, buf, sizeof(buf));
printf("%s", &buf);
// If I write: "/tmp/", printf shows: "/tmp/\n"
DIR* drp = opendir(buf);
// Logically: no such file or directory
}

Спасибо

1 ответ

Проблема в том, как вы читаете строку из stdin, read Функция ждет, пока вы не введете новую строку или другую клавишу EOF. Но он включает в себя этот последний символ в результате.

1) думаю тебе лучше использовать scanf,

scanf("%s", buf);

2) Или вам нужно позаботиться о последнем символе самостоятельно.

char buf[100];
char res[100];
int n = read(1, buf, sizeof(buf));
if(n > 0) {
   memcpy(res, buf, n - 1);
} else {
   printf("Error while reading\n");
}
Другие вопросы по тегам