こんにちは、私は助けが必要です。私はstdin
から16バイト読みたいです。すべてのバイトを16進形式に変換します。私はread()
関数を使用して最初からNOTを読み取る方法はありますか?たとえば2番目のバイトからですか?また、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);
}
出力はこのようなことが、第2から開始するオプションをする必要があります - 私はこれは私が作った機能です全体stdin
を読むまで、私はサイクルでこの関数を呼び出すことができます。この方法例えばバイト。
[[email protected] 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>
を使用傾けるので、これが学校のプロジェクトです。もし私が助けを得て、私の理解できない英語のために申し訳なくしたら、本当にうれしいでしょう。
文字ストリームを検索することはできません。残りの部分は余りにも広すぎます。あなたはレッスンに従っていたはずです。おそらくあなたのコースの資料を参考にして助けてくれるでしょう。そうでない場合は、無料でアクセスできるC本があります。 – Olaf
'buffer [n] = '\ 0';' <=ここでは未定義の動作 – PSkocik
戻り値を 'read()'から取得する必要がありますので、読み込まれたバイト数を知ることができます。 n(別名16)。短く読むことで何をすべきかを決める必要があります。 –