大家好,我需要帮助。我想读取stdin16 个字节。我转换成十六进制形式的每个字节。有没有一种方法可以使用read()函数从头读取 NOT,例如从第二个字节读取?另外我怎么知道我是否已经阅读了全文stdin?- 这样我就可以循环调用这个函数,直到我读完整个stdin
这是我做的一个函数:
void getHexLine()
{
int n = 16;
char buffer[n];
read(STDIN_FILENO, buffer, n);
buffer[n]='\0';
//printf("%08x", 0); hex number of first byte on line - not working yet
putchar(' ');
putchar(' ');
//converting every byte into hexadecimal
for (int i = 0;i < 16;i++ )
{
printf("%x", buffer[i]);
putchar(' ');
if (i == 7 || i == 15)
putchar(' ');
}
printf("|%s|\n", buffer);
}
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的,但可以选择从第二个字节开始。
[vcurda@localhost proj1]$ echo "Hello, world! …Run Code Online (Sandbox Code Playgroud)