2015-03-13 5 views
0

Мне нужно сделать проект, но я попал в проблему. Я получаю строку от чтения, но когда я увижу, какие данные находятся в моем буфере, в конце файла отображается «\ 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 
} 

Благодаря

ответ

0

Проблема в том, как вы читаете строку из 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"); 
}