2016-04-08 16 views
0

固定長の文字配列を作成しました。さて、この配列の中に単語や文を書きます。しかし、この単語センテンスの長さはchar配列の長さよりも短いので、printf関数でメッセージを出力すると、いくつかのひどい文字も表示されます。書き込まれたメッセージの長さが可変であっても、すべての文字を消去したいと考えています。 ありがとうございました!不要な文字を消去する

+2

文字列はヌルで終わらなければなりません(つまり、 '\ 0'で終わらなければなりません)(ps:次にコードに何をしたいかを記述するのではなく、2つが常に一致するわけではありません) – Borgleader

+0

@Borgleader:Answers下に行く↓↓↓↓↓↓ –

+5

....................................... ....................... <ここに答えを挿入> –

答えて

0

固定配列サイズを使用していないと思われましたか?代わりにchar*を使用して、そのサイズを動的に割り当てることができます。

何らかの理由で固定サイズが必要な場合は、別の変数で単語の長さを追跡してからn番目の最初の文字のみを印刷することができます。私が知っている限り、どの文字が有効で、どの文字が配列に含まれていないのかを判断する方法はありません。

+0

'char *'を使わないでください。 'char'バッファを動的に割り当てないでください。私たちは1998年からこれを行うための図書館施設を持っていました。 –

3

C文字列はNULバイト('\0')で終了します。このターミネータがない場合、printfはあなたの文字列が終了したことを知らない。解決策は、あなたの言葉の後に\0を配置することです。

注:これを管理するstd::stringを使用する方法を学んでください。

0

それ以外の場合は、バッファが(nullで終了する)文字列ではなくバイト配列であると仮定した場合、fprintfの代わりにfwriteを使用して内容をダンプできます。

しかし、一般的には、std :: stringを使用する方が良いかもしれないことに私は同意します。

関連する問題