2

フォーマット指定子のコンパイル エラーが多数ある既存の C ファイルを修正する必要があります。次の場合、誰でも正しいフォーマット指定子を教えてもらえますか:

  1. u_char(*) [10](%s を試しましたが、うまくいきませんでした)

  2. char(*) [10](%s と %c を試しましたが、うまくいきませんでした)

ありがとう。

4

2 に答える 2

4

どちらも配列へのポインターであるため、それらを逆参照して配列にすることができます。配列は最初の要素へのポインターに減衰します。

char arr[10];

char (*pa)[10] = &arr;
printf("%s", *pa);   // or &((*pa)[0])

それを詳しく説明すると、 is の型とpaischar(*)[10]の型で*paありchar[10]、後者はchar*の値&((*pa)[0])( に等しい&(arr[0])) に減衰します。

于 2012-03-24T19:52:22.890 に答える
0

私はケレックに同意しますが、私は思う

printf ("%s", *pa);

最後に NULL 文字があるかどうかわからないため、そのままでは機能しない可能性があります。したがって、印刷するには、次のことができます

char temp[10+1];
memcpy(temp, *pa, 10);
temp[10] = '\0';
printf("%s",temp);
于 2012-03-24T20:16:56.420 に答える