Code Fix

C言語エラー 練習問題 108問(全問無料)

コンパイルエラー・実行時エラー・ロジックの誤りを、空欄補充で直す練習問題です。登録不要でその場で解けます。エラーメッセージで絞り込めます。

出題モード

このモードで始める

選んだモードは次の問題への移動にも適用されます。記録は端末内にのみ保存されます。

すべての問題

エラー難易度種別
error: expected ';' before ... の原因と直し方 #1 初級コンパイル
error: expected ';' before ... の原因と直し方 #2 初級コンパイル
error: expected ';' before ... の原因と直し方 #3 初級コンパイル
error: 'x' undeclared (first use in this function) の原因と直し方 #1 初級コンパイル
error: 'x' undeclared (first use in this function) の原因と直し方 #2 初級コンパイル
error: 'x' undeclared (first use in this function) の原因と直し方 #3 初級コンパイル
error: missing terminating " character の原因と直し方 #1 初級コンパイル
error: missing terminating " character の原因と直し方 #2 初級コンパイル
error: missing terminating " character の原因と直し方 #3 初級コンパイル
if文の条件式で = と == を間違えて常に真になる #1 初級ロジック
if文の条件式で = と == を間違えて常に真になる #2 初級ロジック
if文の条件式で = と == を間違えて常に真になる #3 初級ロジック
int同士の割り算で小数点以下が切り捨てられる #1 初級ロジック
int同士の割り算で小数点以下が切り捨てられる #2 初級ロジック
int同士の割り算で小数点以下が切り捨てられる #3 初級ロジック
Floating point exception(整数のゼロ除算) #1 初級実行時
Floating point exception(整数のゼロ除算) #2 初級実行時
Floating point exception(整数のゼロ除算) #3 初級実行時
Segmentation fault(NULLポインタの参照) #1 初級実行時
Segmentation fault(NULLポインタの参照) #2 初級実行時
Segmentation fault(NULLポインタの参照) #3 初級実行時
error: expected declaration or statement at end of input の原因と直し方 #1 初級コンパイル
error: expected declaration or statement at end of input の原因と直し方 #2 初級コンパイル
error: expected declaration or statement at end of input の原因と直し方 #3 初級コンパイル
error: implicit declaration of function 'X' の原因と直し方 #1 初級コンパイル
error: implicit declaration of function 'X' の原因と直し方 #2 初級コンパイル
error: implicit declaration of function 'X' の原因と直し方 #3 初級コンパイル
error: invalid operands to binary % の原因と直し方 #1 初級コンパイル
error: invalid operands to binary % の原因と直し方 #2 初級コンパイル
error: invalid operands to binary % の原因と直し方 #3 初級コンパイル
error: unknown type name の原因と直し方 #1 初級コンパイル
error: unknown type name の原因と直し方 #2 初級コンパイル
error: unknown type name の原因と直し方 #3 初級コンパイル
error: initialization of 'char' from 'char *' makes integer from pointer without a cast の原因と直し方 #1 初級コンパイル
error: initialization of 'char' from 'char *' makes integer from pointer without a cast の原因と直し方 #2 初級コンパイル
error: initialization of 'char' from 'char *' makes integer from pointer without a cast の原因と直し方 #3 初級コンパイル
配列のループが1つずれて範囲外を読む・最後の要素が抜ける #1 初級ロジック
配列のループが1つずれて範囲外を読む・最後の要素が抜ける #2 初級ロジック
配列のループが1つずれて範囲外を読む・最後の要素が抜ける #3 初級ロジック
printfの%dにdouble型を渡すと無関係な値が表示される #1 初級ロジック
printfの%dにdouble型を渡すと無関係な値が表示される #2 初級ロジック
printfの%dにdouble型を渡すと無関係な値が表示される #3 初級ロジック
sizeofが配列の要素数ではなくポインタのサイズを返す #1 中級ロジック
sizeofが配列の要素数ではなくポインタのサイズを返す #2 中級ロジック
sizeofが配列の要素数ではなくポインタのサイズを返す #3 中級ロジック
Segmentation fault(strcpyによるバッファオーバーフロー) #1 中級実行時
Segmentation fault(strcpyによるバッファオーバーフロー) #2 中級実行時
Segmentation fault(strcpyによるバッファオーバーフロー) #3 中級実行時
strcmpの戻り値を真偽値と勘違いして条件が逆になる #1 中級ロジック
strcmpの戻り値を真偽値と勘違いして条件が逆になる #2 中級ロジック
strcmpの戻り値を真偽値と勘違いして条件が逆になる #3 中級ロジック
ビット演算子 & の優先順位が比較演算子 == より低いことによる誤動作 #1 中級ロジック
ビット演算子 & の優先順位が比較演算子 == より低いことによる誤動作 #2 中級ロジック
ビット演算子 & の優先順位が比較演算子 == より低いことによる誤動作 #3 中級ロジック
switch文でbreakを忘れて次のcaseまで実行される(フォールスルー) #1 中級ロジック
switch文でbreakを忘れて次のcaseまで実行される(フォールスルー) #2 中級ロジック
switch文でbreakを忘れて次のcaseまで実行される(フォールスルー) #3 中級ロジック
error: invalid operands to binary ==(構造体同士の==比較) #1 中級コンパイル
error: invalid operands to binary ==(構造体同士の==比較) #2 中級コンパイル
error: invalid operands to binary ==(構造体同士の==比較) #3 中級コンパイル
error: assignment of read-only variable の原因と直し方 #1 中級コンパイル
error: assignment of read-only variable の原因と直し方 #2 中級コンパイル
error: assignment of read-only variable の原因と直し方 #3 中級コンパイル
error: assignment of read-only location の原因と直し方 #1 中級コンパイル
error: assignment of read-only location の原因と直し方 #2 中級コンパイル
error: assignment of read-only location の原因と直し方 #3 中級コンパイル
Segmentation fault(scanfで&を付け忘れる) #1 中級実行時
Segmentation fault(scanfで&を付け忘れる) #2 中級実行時
Segmentation fault(scanfで&を付け忘れる) #3 中級実行時
多次元配列で行と列の添字を取り違えて違う値を読む #1 中級ロジック
多次元配列で行と列の添字を取り違えて違う値を読む #2 中級ロジック
多次元配列で行と列の添字を取り違えて違う値を読む #3 中級ロジック
関数内のローカル変数のアドレスを返すと解放済み領域を指す #1 中級実行時
関数内のローカル変数のアドレスを返すと解放済み領域を指す #2 中級実行時
関数内のローカル変数のアドレスを返すと解放済み領域を指す #3 中級実行時
符号ありと符号なしの比較で -1 が巨大な数として扱われる #1 中級ロジック
符号ありと符号なしの比較で -1 が巨大な数として扱われる #2 中級ロジック
符号ありと符号なしの比較で -1 が巨大な数として扱われる #3 中級ロジック
int型の最大値に1を足すと最小値(負の数)に折り返る #1 中級ロジック
int型の最大値に1を足すと最小値(負の数)に折り返る #2 中級ロジック
int型の最大値に1を足すと最小値(負の数)に折り返る #3 中級ロジック
free(): double free detected in tcache の原因と直し方 #1 上級実行時
free(): double free detected in tcache の原因と直し方 #2 上級実行時
free(): double free detected in tcache の原因と直し方 #3 上級実行時
Assertion failed の原因と直し方 #1 上級実行時
Assertion failed の原因と直し方 #2 上級実行時
Assertion failed の原因と直し方 #3 上級実行時
Segmentation fault(再帰関数の終了条件忘れによるスタックオーバーフロー) #1 上級実行時
Segmentation fault(再帰関数の終了条件忘れによるスタックオーバーフロー) #2 上級実行時
Segmentation fault(再帰関数の終了条件忘れによるスタックオーバーフロー) #3 上級実行時
error: invalid type argument of unary '*'(関数ポインタ呼び出しの優先順位) #1 上級コンパイル
error: invalid type argument of unary '*'(関数ポインタ呼び出しの優先順位) #2 上級コンパイル
error: invalid type argument of unary '*'(関数ポインタ呼び出しの優先順位) #3 上級コンパイル
error: invalid type argument of '->' の原因と直し方 #1 上級コンパイル
error: invalid type argument of '->' の原因と直し方 #2 上級コンパイル
error: invalid type argument of '->' の原因と直し方 #3 上級コンパイル
0.1 + 0.2 == 0.3 が偽になる理由 #1 上級ロジック
0.1 + 0.2 == 0.3 が偽になる理由 #2 上級ロジック
0.1 + 0.2 == 0.3 が偽になる理由 #3 上級ロジック
free()した後のポインタを使っても動いてしまう(use-after-free) #1 上級ロジック
free()した後のポインタを使っても動いてしまう(use-after-free) #2 上級ロジック
free()した後のポインタを使っても動いてしまう(use-after-free) #3 上級ロジック
Segmentation fault(配列の範囲外への書き込み) #1 上級実行時
Segmentation fault(配列の範囲外への書き込み) #2 上級実行時
Segmentation fault(配列の範囲外への書き込み) #3 上級実行時
static付きローカル変数が関数呼び出しをまたいで値を保持し続ける #1 上級ロジック
static付きローカル変数が関数呼び出しをまたいで値を保持し続ける #2 上級ロジック
static付きローカル変数が関数呼び出しをまたいで値を保持し続ける #3 上級ロジック
広告
広告スロット(未設定)

エラーの種類について

Cのエラーは大きく3種類に分かれます。コンパイルエラーはgccがソースを解析する段階で検出するもので、実行ファイルすら作られません。実行時エラーはコンパイルは通るものの、実行中にOSがプロセスを強制終了させるものです。Java/Pythonと違い、Cのプログラム自身はクラッシュ時に何もメッセージを出しません。"Segmentation fault" のような文字列は、プログラムではなくシェルが「子プロセスが異常終了した」と報告しているものです。ロジックの誤りはどちらのエラーも出ませんが結果が期待と違うもので、Cでは未定義動作によって「たまたま動いてしまう」ケースが特に多いのが特徴です。

最も発見が遅れるのは3つ目です。このサイトではロジックの誤りも問題に含めており、コンソール表示が赤ではなく琥珀色になります。

初級から順に解く

広告
広告スロット(未設定)