0

構造体の配列を次のように宣言しました。

typedef struct{
int source;
int dest;
int type;
int port;
char data;
}test;

test packet[50];

そして、私は配列にアクセスして、それを画面に出力しようとしています:

for (p = 0; p < i; p++)
{
    printf("%i", packet[p]);
}

しかし、私は期待したものを得ていません。私は C で非常に新しいので、この投稿で問題が発生したことをお詫びします。詳細についてはお尋ねください。お答えします。これでロジックが完全に間違っていますか?

私の頭の中で、構造体に 5 つの変数を含む配列の各要素を持つ配列に構造体の 50 個のインスタンスを作成しました。

4

2 に答える 2

3

Cをやったのは何年も前ですが、そのようには機能しないと思います。構造体のメンバー変数を 1 つずつ出力したい場合があります。

for (p = 0; p < i; p++)
{
  printf("%i\n", packet[p].source);
  printf("%i\n", packet[p].dest);
  printf("%i\n", packet[p].type);
  printf("%i\n", packet[p].port);
}

またはさらに良いことに、メソッドを作成し、それを次のように呼び出してprintTest()、上記のようにします。

上記の例では、オブジェクト全体を印刷しようとしていますが、うまくいきません。

于 2012-05-03T20:12:11.763 に答える
0

与えられた

typedef struct{
int source;
int dest;
int type;
int port;
char data;
}test;

test packet[50];

アクセスするすべてのフィールドを明示的に参照する必要があります。あなたの例の場合、構造体の各フィールドを出力したいので、次のように各フィールドを具体的に参照する必要があります。printf("%i\n", packet[0].source);

あなたの特定の例は、配列インデックスとして p を使用した for ループにあったため、実際のコードは次のようになります。printf("%i\n", packet[p].source);

最後に、C++ ではいくつかの C コンストラクトについて簡単に説明できますが、C ではクラスなどの C++ コンストラクトについては簡単に説明できません。

于 2012-05-03T20:44:19.607 に答える