Удалить символ "\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");
}