gpt4 book ai didi

c - 我如何在标准输入中寻找

转载 作者:行者123 更新时间:2023-12-05 01:35:08 26 4
gpt4 key购买 nike

大家好,我需要帮助。我想阅读 stdin按 16 个字节。我转换成十六进制形式的每个字节。有什么方法可以使用 read()函数不是从头开始读取,而是从第二个字节读取?另外我怎么知道我是否已经阅读了全文 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);
}

输出应该是这样的,但可以选择从第二个字节开始。
[vcurda@localhost proj1]$ echo "Hello, world! This is my program." | ./proj1
48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 20 54 68 |Hello, world! Th|
69 73 20 69 73 20 6d 79 20 70 72 6f 67 72 61 6d |is is my program|

这是一个学校项目,所以我不能使用 malloc , scanf<string.h> .如果我得到一些帮助,我会很高兴,并为我不太懂的英语感到抱歉。

最佳答案

标准输入不可查找。您可以读入字节,但不能倒带或快进。 EOF (-1) 意味着与常规文件一样在标准输入中结束输入,但如果您与用户进行交互式对话,则它是一个更宽松的概念。

基本上标准输入是面向行的,最好使用模式 printf() 提示,从用户输入整行,printf() 结果(如果适用)和另一个提示,从用户读取整行,依此类推,至少在一开始直到你习惯于编程标准输入。

从第二个字节开始就变得容易了。阅读整行,然后在解析时从 i = 1 而不是 i = 0 开始。

关于c - 我如何在标准输入中寻找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40063488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com