C言語学習ポータル(無料版) 学習コンテンツ つまずきとエラー

C言語のつまずきとエラーの直し方(24件)

「コンパイルは通るのに結果がおかしい」「意味の分からないエラーが出る」— C言語でつまずきやすい場面を、症状から逆引きできるように並べました。

= と == を間違えるif (x = 5) と書いてもエラーにならず、条件がいつも成立してしまいます。gccは warning: suggest pa… セミコロンの書き忘れerror: expected ';' before 'printf' や error: expected ';' before… scanf で & を付け忘れるscanf("%d", n); と書くと gcc は warning: format '%d' expects argument… scanf のあとに改行が残るscanf("%d", &age); の次に置いた scanf("%c", &c) や fgets が、入力を待たずに素通りしま… 整数どうしの割り算が切り捨てられるint a = 7, b = 2; double r = a / b; の結果が 3.5 ではなく 3.0 になります。平均点や… printf の書式指定子と型が合っていないprintf("%d\n", 3.14); が 0 や意味不明な数を表示します。printf("%s\n", 5); は Seg… 配列の境界外アクセスたいてい何事もなく動きます。ときどき無関係な変数の値が勝手に変わり、たまに Segmentation fault (core d… ヌル終端 '\0' を忘れる%s で表示すると、狙った文字列の後ろに文字化けが延々と続きます。strlen が想定外の大きな値を返します。運が悪いと Add… strcpy でバッファをあふれさせる実行時に * stack smashing detected *: terminated と出て Aborted (core d… 変数を初期化せずに使う実行するたびに結果が変わります。自分のPCでは0で正しく動くのに、別の環境や最適化を変えた途端に壊れます。gcc: warnin… 関数に配列を渡すと sizeof が変わるmain では sizeof(a) が 40 なのに、同じ配列を渡した関数の中では 8(32bit環境なら4)になります。gcc… do-while の最後のセミコロンerror: expected ';' before '}' token(clang: error: expected ';' … switch の break 忘れ一致した case 以降の処理が全部実行されます。gcc: warning: this statement may fall t… char配列に文字列を代入できないchar s[10]; s = "hello"; で gcc: error: assignment to expression … 浮動小数点数を == で比較するif (0.1 + 0.2 == 0.3) が成立しません。printf("%.17f\n", 0.1 + 0.2) すると 0… グローバル変数の乱用「どこで値が変わったのか分からない」バグが出ます。関数を単体で見ると正しいのに、組み合わせると壊れます。同名の定義が複数ファイル… gets を使ってしまうgcc: warning: implicit declaration of function 'gets'(C23モードのgcc… キャスト忘れの整数演算(計算の途中であふれる)long long total = 100000 * 100000; の結果が 1410065408 になります。定数式なら g… 演算子の優先順位の誤解if (x & 1 == 0) が思った通りに動きません。gcc: warning: suggest parentheses a… 無限ループから抜けられない実行すると出力が止まらない、または画面が固まって戻ってきません。Ctrl+C で強制終了するしかない状態になります。 文字と文字列の混同('a' と "a")char c = "A"; で gcc: warning: initialization of 'char' from 'cha… ソースコードを保存しただけでは動かないhello.c を保存してダブルクリックしても、エディタがもう1枚開くだけで何も起きません。gcc hello.c は成功したの… 「言わなくても分かる」ことを手順に書き忘れる自分では完璧な手順を書いたつもりなのに、実行させると途中で止まる・見当違いの結果になる。人に渡すと必ず「ここはどうすればいいの?… 頭の中だけでトレースして値を取り違える「読めば分かるはず」と画面をにらみ続けても原因が見つかりません。答えが1つだけずれる、ループの最後の1周が余る・足りない、といっ…

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH