[英]How do I seek in stdin
大家好,我需要幫助。 我想從stdin
讀取16個字節。 我將每個字節轉換為十六進制形式。 有沒有辦法我可以使用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);
}
輸出應該像這樣,但是可以選擇從第二個字節開始。
[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>
。 如果能得到一些幫助,我真的很高興,對於我不太懂英語的情況感到抱歉。
stdin不可搜索。 您可以讀入字節,但不能后退或快進。 EOF(-1)表示標准輸入中的stdin輸入與常規文件一樣結束,但是如果您要與用戶進行交互式對話,則這有點松散的概念。
基本上stdin是面向行的,最好使用模式printf()提示,從用戶輸入整行,如果適用的話輸入printf()的結果,以及另一個提示,從用戶整行讀取,依此類推,至少在開始之前直到您已經習慣了對stdin進行編程。
從第二個字節開始然后變得容易。 讀整行,然后從i = 1而不是i = 0開始解析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.