• ベストアンサー

コンパイルするとエラーに。C言語

OSはLINUXです。GNOME 端末を使用してます。ここの関数でエラーが起きているみたいなんです。(部分的に載せてしまいましたが、それとも全体も載せた方がいいでしょうか?) void readargs(int argc, char *argv[]) { int c; int atoi(char *); while (--argc > 0 && (c = (*++argv)[0] == '-' || c == '+') { if (c == '-' && !isdigit(*(argv[0]+1))) while (c = *++argv[0]) switch (c) { case 'd': option |= DIR; break; case 'f': option |= FOLD; break; case 'n': option |= NUMERIC; break; case 'r': option |= DECR; break; default: printf("sort: illegal option %c\n", c); error("Usage: sort -dfnr [+pos1] [-pos2]"); break; } else if (c == '-') pos2 = atoi(argv[0]+1); else if ((pos1 = atoi(argv[0]+1)) < 0) error("Usage: sort -dfnr [+pos1] [-pos2]"); } if (argc || pos1 > pos2) error("Usage: sort -dfnr [+pos1] [-pos2]"); } } ちなみに、エラー内容は「case label not within a switch statement」 「break statement not within loop or switch」です。 似たような問題はできたのですが、これだけはなぜかエラーが起きてしまいました。アドバイス・回答待ってます。

質問者が選んだベストアンサー

  • ベストアンサー
  • yama5140
  • ベストアンサー率54% (136/250)
回答No.4

ちょっと見、冒頭の >while (--argc > 0 && (c = (*++argv)[0] == '-' || c == '+') {  に、) がひとつ足りないような・・。

p_hetare
質問者

お礼

これは酷いイージーミスですね; そういえば、打ち込んでる途中 タブをしたけどしっくり来なかった箇所があったことを思い出しました。 アドバイスありがとうございます!

その他の回答 (3)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

もし、行番号も含めて載せるなら cat -n ソースファイル名 と端末で入力して下さい。 そうすると、行番号がついて、表示されます。 それをコピーして張り付けて下さい。

p_hetare
質問者

お礼

アドバイスありがとうございます。 だけど 長すぎて字数制限にひっかかってしまうんですよ; かなりグダグダになってしまいそうです;

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

一箇所だけおかしいことがわかっているのは、末尾の閉じ中括弧の相手がないことぐらいです。 > それとも全体も載せた方がいいでしょうか? 全部乗せてください。 あと、エラーメッセージも、行番号等も省略せずに全部載せてください。

p_hetare
質問者

お礼

> 末尾の閉じ中括弧の相手がないことぐらいです。 すみません;。 載せる為にコピーした際 誤って途中までしかコピーしてませんでした; わかりました。全部載せますね。

  • Hardking
  • ベストアンサー率45% (73/160)
回答No.1

変数cはchar型でないといけません。

p_hetare
質問者

お礼

試してみましたが、上手くいきませんでした; やはり全体のモノを載せてみますね。

関連するQ&A

専門家に質問してみよう