Прочитайте всего один байт с помощью функции read() из unistdLinux

Ответить
Anonymous
 Прочитайте всего один байт с помощью функции read() из unistd

Сообщение Anonymous »

Я пытаюсь запустить проект палача, и сначала хочу позаботиться о том, как получить письмо пользователя из терминала. Я знаю, что могу прочитать только один байт и сохранить это значение в адрес указателя с помощью

Код: Выделить всё

char *ptr;
int read_bytes;

read_bytes = read(0, ptr, 1);
//NULL checks
но прямо сейчас я написал функцию, которая возвращает буфер с нулевым завершением всего с двумя символами (ввод пользователя и нулевой символ в конце).
Это код.

Код: Выделить всё

#include "utils.h"

char    *read_one_byte(int   fd)
{
char        *buf;
int     read_bytes;

if (!(buf = malloc(sizeof(char) * 2)))
return (NULL);
if ((read_bytes = read(fd, &buf, 1)))
{
buf[1] = '\0';
return (buf);
}
else
return (NULL);
}
Стоит ли NULL завершать буфер, даже если его содержимое состоит всего из одного символа, или мне вообще не стоит беспокоиться?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»