使用read()获取c中的输入
发布时间:2022-03-02 15:45:53 450
相关标签: # c++
所以我尝试使用read()获取用户输入。while循环一直运行,直到在linux终端中输入ctrl+d并停止输入。我写了一些代码,但我遇到的问题是,我不知道如何准确地获取输入中的内容以及如何使用它。
在下面的代码中,在if(buff[offset] == '\n')
(运行给定的输入,完成后清除缓冲区并转到下一个输入)我不知道如何进入3种可能的输入情况,也不知道如何从第二种情况中获取数字:
- &引用;e";-退出程序
- &引用;p N";-做点什么,N是一个数字,我也需要把它放入一个变量中(我认为
buff[offset-1]
我应该知道号码,但我不太确定。) - 其他一切-打印消息
代码:
int fd = 0; // set read() to read from STDIN_FILENO, because it's number is 0
const size_t read_size = 1; // set chunk size
size_t size = read_size;
size_t offset = 0;
size_t res = 0;
char *buff = malloc(size+1);
*buff = '\0';
while((res = read(fd, buff + offset, read_size)) > 0) // read from stdin and save to buff
{
if(buff[offset] == '\n')
{ // THIS PART
buff[offset] = '\0';
if(buff == "e")
{
// exit the program
return 0;
}
else if(buff == "p")
{
// do sth
}
else
{
// print a message
}
// reset the buffer (free its memory and allocate new memory for the next input)
offset = 0;
size = read_size;
free(buff);
buff = NULL;
buff = malloc(size + 1);
*buff = '\0';
}
else
{
offset += res;
buff[offset] = '\0';
if (offset + read_size > size)
{
size *= 2;
buff = realloc(buff, size+1);
}
}
}
如果read()无法实现这一点,我可以尝试其他类似fgets()的功能,也许?
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报