-5

ターミナルでヘキサで10 バイト ( 010830FFFFFFFFFF0304) を受け取りました。この配列の一部 (この 5 バイトFFFFFFFFFF) だけを別の char 配列に書き込む必要があります。

コードは次のとおりです。

#include <stdio.h>

void main(){
    char buffer[];  // buffer size in bytes
    int i;          // counter
    while(true){
        for(i=0; i<buffer; i++){
            buffer[i] = getc();
        }
    }
}

配列のこの部分を抽出する方法は?

4

3 に答える 3

6

一般的な修正:

  • (10)は実寸を記載bufferしておりましたが、サイズがありませんでした。
  • middleそのようなスペースがなかった回答 ( ) の配列を宣言しました。
  • 無意味な比較の代わりに、10回ループしますi<buffer
  • while(true)決して終了しないアウターを削除しました。
  • Imemcpy入力バッファから回答まで、5 文字です。

あなたの質問は非常に不明確で不正確なので、私はあなたが何を意図したかを推測することしかできません.

void main()
{
    char buffer[10]; // buffer size in bytes
    char middle[5];
    int i; // counter

    for(i=0; i<10; ++i){
        buffer[i] = getc();
    }

    memcpy(middle, &buffer[3], 5*sizeof(char));

    for(i=0; i<5; ++i)
    {
        printf("%x",middle[i]);
    }
    printf("\n");
}
于 2013-07-31T21:27:40.253 に答える
0
    #include <stdio.h>

    void main(){
    char buffer[64]; // buffer size in bytes
    char result[10];
    int i; // counter
    while(1){
    for(i=0; i<10; i++){
    buffer[i] = getc(stdin);
    }
    for(i=0; i<5; i++){
       result[i] = buffer[i+3];
    }
    result[i] = 0;  // end string
    printf("%s\n",result);
    }
}
于 2013-07-31T21:26:35.997 に答える
0

while(true) ループがあり、別の char 配列を作成して必要な文字を入れるだけです。

#include <stdio.h>

void main()
{
    char buffer[10]; // buffer size in bytes
    char smallBuf[5]; // buffer size in bytes
    int i; // counter

    for(i=0; i<10; i++)
    {
        buffer[i] = getc();
    }

    for(i=0; i<5; i++)
    {
        smallBuf[i] = buffer[i + 3];
    }
}
于 2013-07-31T21:26:47.450 に答える