C言語

「C言語」の編集履歴(バックアップ)一覧はこちら

C言語」(2013/05/11 (土) 20:30:03) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

scanf %cは空白や改行も読み込むので、次の行を読み込んでいると見せかけて 同じ行の改行を読み込んでいることがあります。 対策としては%cを避けて配列を定義し、%sで読み込む方法があります。 C++のcinでは改行や空白は読み込まないので、大丈夫です。 ポインタについて
scanf %cは空白や改行も読み込むので、次の行を読み込んでいると見せかけて 同じ行の改行を読み込んでいることがあります。 対策としては%cを避けて配列を定義し、%sで読み込む方法があります。 C++のcinでは改行や空白は読み込まないので、大丈夫です。 ポインタについて ポインタ配列とダブルポインタ ダメな例 char **StringArray ; StringArray[0] = "ABCD" ; StringArray[1] = "1234" ; たまたま、動いたりすることも多いので、コードレビューを細かく行わないと気がつかず、リリース前のテストで、メモリの内容を破壊しまくって慌てるという状況に陥ります。 おかしいのは、ダブルポインタ変数に、配列用の領域を割り当てていないこと。ポインタ配列でなく、わざわざダブルポインタ変数を使うのは、配列の要素数が変動する可能性があるからなので、次のコードは正しいのですが、要素数の変動に対応できません。 char *StringArray[2] ; StringArray[0] = "ABCD" ; StringArray[1] = "1234" ;  要素数の変動に対応するのであれば、下記のようなコードになります。 // Cの場合 char **StringArray ; StringArray = (char **)malloc( sizeof(char * ) * 要素数 ) ; StringArray[0] = "ABCD" ; StringArray[1] = "1234" ; // 使い終わったらメモリ領域を解放 free( StringArray ) ; // C++の場合 char **StringArray ; StringArray = new char * [要素数] ; StringArray[0] = "ABCD" ; StringArray[1] = "1234" ; // 使い終わったらメモリ領域を解放 delete []StringArray ;

表示オプション

横に並べて表示:
変化行の前後のみ表示: