У меня есть небольшой вопрос, связанный с командой read().read() stdin в c?
Я действительно ржавый на C, и, к сожалению, мое текущее задание имеет программирование на C. Нам нужно прочитать stdin, используя read(), а не fgets и т. П.
Так что я просто в то время как цикл:
int n, i;
char buffer[257], *input;
while((n=read(fileno(stdin), buffer, 256)) > 0)
{
buffer[n] ='\0';
if(buffer[n] = '\n') break;
write(input, buffer, strlen(buffer));
}
Так что я не знаю, как сделать эту остановку цикла по нажатию Enter (конец строки), так вот почему у меня есть код прерывания, хотя Я не знаю, правильно ли это сделано.
Вся цель я пытаюсь сделать это поместить вход со стандартного ввода в указателе «вход»
(я очень плохо понимая указатели так, медведь со мной :))
Моя проблема что я получаю ошибки сегментации, когда я нажимаю enter. Я хотел бы использовать fgets, потому что тогда все это будет решено с помощью простого
input = fgets(buffer, 256, stdin);
штопки домашнего задания :( В любом случае, если любой из вас может мне точку в правильном направлении, я бы очень признателен. Спасибо !.. вы
'if (buffer [n] = '\ n') break;' Я думаю, что вы намеревались 'if (n && buffer [n-1] == '\ n') break;' (или, возможно, даже 'if (n == 1 && buffer [n-1] == '\ n') break; '. Также' write (input, buffer, strlen (buffer)); 'может быть заменено на' write (input, buffer, n); ' – wildplasser
Ваш код похож на' x = 1, if (x == 0) {/*...*/} '. Вы можете определить проблему? –