2017-11-06 14 views
-5

CodeBlockターミナルでCを使用してテキストファイルから文字を印刷しようとしています。私はgetcとprintfを使用します。しかし、端末には望ましくない文字も表示されます。例えば、私が読ん 、cでテキストファイルを印刷するときに不明な文字

CAAAAATATAAAAACAGGTTTATGATATAAGGTAAAGTATGGGAGATGGGGACAAAAGT 

それは示しては、

CΘA A A A A T A T A A A A A C A G G T T T A T G A T A T A A G GT A A A G T A T$GhGêG╝A G<AöT [email protected]ñG<G AxC A A A A G T 

は、いずれもこのような状況を回避するために何ができるか明記してくださいことができます。

+5

コードを表示しますか? – rsp

+3

コード? –

+1

_デバッグヘルプを検索する質問(このコードが動作しないのはなぜですか?)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法。 –

答えて

3

あなたのテキストファイルは明らかに2バイトcharacter encodingを使用します。これがウィンドウズ上にある場合は、おそらくUTF-16です。

charは1バイトであるため、1バイトのエンコードが想定されています。これを解決する方法はたくさんあります。 iconvを使用できます。 Windowsでは、一緒にgetwc()のようなワイド文字のための機能を持つ(このファイルの文字を読み取るために、あなたが8バイトのエンコーディングでそれを必要とする場合、WideCharToMultiByte()などのWindows API関数を助けることができるwchar_t(*)を使用することができます。


wchar_tは、ワイド文字の型ですが、ワイド文字の持つバイト数はインプリメンテーション定義されています。wchar_tは16ビットで、通常はUTF-16エンコード文字を保持します。通常、UCS-4でエンコードされた文字を保持します。

関連する問題