質問: '\0'; } } 実行結果 naka@naka ~/kadai/kadai9-8 $ gcc -o LST15 LST15.c -Wall naka@naka ~/kadai/kadai9-8 $ LST15 a 追加する数値データを入力して下さい。 4 コマンドを入力して下さい。 連結リストに要素を追加する: a (add) 連結リストに要素を挿入する: i (insert) 連結リストから要素を削除する: d (delete) 連結リストから要素を探す: s (search) 連結リストを空にする: c (clear) 連結リストの中身を出力する: p (print) 終了する: e(exit) a 追加する数値データを入力して下さい。 5 コマンドを入力して下さい。 連結リストに要素を追加する: a (add) 連結リストに要素を挿入する: i (insert) 連結リストから要素を削除する: d (delete) 連結リストから要素を探す: s (search) 連結リストを空にする: c (clear) 連結リストの中身を出力する: p (print) 終了する: e(exit) a 追加する数値データを入力して下さい。 9 コマンドを入力して下さい。 連結リストに要素を追加する: a (add) 連結リストに要素を挿入する: i (insert) 連結リストから要素を削除する: d (delete) 連結リストから要素を探す: s (search) 連結リストを空にする: c (clear) 連結リストの中身を出力する: p (print) 終了する: e(exit) p 9 5 4 コマンドを入力して下さい。 連結リストに要素を追加する: a (add) 連結リストに要素を挿入する: i (insert) 連結リストから要素を削除する: d (delete) 連結リストから要素を探す: s (search) 連結リストを空にする: c (clear) 連結リストの中身を出力する: p (print) 終了する: e(exit) i 挿入する数値データを入力して下さい。 6 挿入する数値データをどこの数値の前に入力するか入力して下さい。 5 コマンドを入力して下さい。 連結リストに要素を追加する: a (add) 連結リストに要素を挿入する: i (insert) 連結リストから要素を削除する: d (delete) 連結リストから要素を探す: s (search) 連結リストを空にする: c (clear) 連結リストの中身を出力する: p (print) 終了する: e(exit) p 9 5 4 変化なし(6が挿入されない) */ ```
回答: //insertコマンドの実行 enum CmdRetValue_tag cmd_insert(void) { char buf[40],buf2[40]; int value,pos; puts( "挿入する数値データを入力して下さい。" ); fgets( buf, sizeof(buf), stdin ); sscanf( buf, "%d", &value ); //文字列bufから書式format( "%d")にしたがって、 //scanf関数と同様の変換を行った入力を、 //指定されたアドレス(&value )に格納します。 puts( "挿入する数値データをどこの数値の後に入力するか入力して下さい。" ); fgets( buf, sizeof(buf), stdin ); sscanf( buf2, "%d", &pos ); insert_elem( value,pos); //要素を挿入する return CMD_RET_VALUE_CONTINUE; } の下から6行目fgets( buf, sizeof(buf), stdin );をfgets( buf2, sizeof(buf), stdin );に変更しました。単純なミスでした。それでも1日かかりました。