2

私は今しばらくの間、同じコードで立ち往生しています。テキストファイル(ascii)から読み取った文字でchar配列を埋めようとしています。しかし、何らかの理由でchar配列をprintfすると、文字Hしか表示されません。

コード:

void append(char c)
{
  //int len = strlen(cStr);
  cStr[iCounter] = c;
  cStr[iCounter + 1] = '\0';
  printf("char c:%c    char array%c\n",c,cStr);
}

char配列(cStr)は、さまざまな関数からアクセスする必要があるため、この関数の外部で宣言されています。この関数を実行するたびにインクリメントされるiCounterも同様です。

どんな助けでもいただければ幸いです。

4

2 に答える 2

3

代わりに、%c使用文字列指定子を使用して1文字を出力します。%s

printf("char c:%c    char array%s\n",c,cStr);

注:iCounter実際にはインクリメントされません:

  cStr[iCounter++] = c;
  cStr[iCounter] = '\0';
于 2012-11-23T11:28:48.947 に答える
1

%s文字列を印刷するために使用します。%cユニークなキャラクターを印刷するために使用されます。

printfのマニュアルページから

c

l修飾子が存在しない場合、int引数はunsigned charに変換され、結果の文字が書き込まれます。l修飾子が存在する場合、wint_t(ワイド文字)引数はwcrtomb(3)関数の呼び出しによってマルチバイトシーケンスに変換され、変換状態は初期状態から始まり、結果のマルチバイト文字列が書き込まれます。

于 2012-11-23T11:28:46.063 に答える