C言語:exitの使い方

このQ&Aのポイント
  • C言語でのexitの使い方についての質問です。
  • プログラムが終了せず、コンパイルも通らないエラーが発生しています。
  • 質問者は、入力した数値分の警告を表示するプログラムを作成しており、exitの位置でプログラムが終了しない問題に直面しています。
回答を見る
  • ベストアンサー

exitってどう使うの?

exitを使いたいのですが、プログラムが終了しません。 コンパイルも通りません。 警告:コードは効果を持たない(関数 exit) エラー:ステートメントにセミコロンが無い(関数 exit) と出ます。 windowsでC言語書いています。 入力した数値分「警告」を表示するプログラムなのですが #include <stdio.h> #include <stdlib.h> void exit(int x) { while(x-- > 0){ if(x==0){ printf("警告!\n"); exit 0; } printf("警告!残り%d回。\n", x); } } int main() //警告を表示する回数を変数に代入するプログラムvoid exitのxに渡す。 どうすればexitの位置でプログラムが終了するようにできるのでしょうか。 どなたか教えていただけないでしょうか。

  • dra2jp
  • お礼率27% (168/613)

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

  • ベストアンサー
  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.1

exitは関数だから、 exit(0); だと思います。 return 0; とは違います。 あと、作った関数の名前をexit以外の名前にする必要があります。

dra2jp
質問者

お礼

できました~@^^@

関連するQ&A

  • malloc メモリリークについて

    #include<stdio.h> #include<stdlib.h> void alloconly(void) { const int sz=10; static int n=0; void *p; p=(void*)malloc(sz); if(p==NULL){ printf("動的確保不可 %d\n",n+1); printf("確保メモリサイズ %d byte\n",sz*n); exit(-1); } ++n; } int main(void) { for(;;){ alloconly(); } }と言うプログラムがある本に載っており、回答として   動的確保不可 *******(数字)   確保メモリサイズ *********byte(数字)となっていますが私の環境(Reshat Linux)では   強制終了します で終了してしまいます。原因が判らず困っています。ご解答願います。

  • サブ関数、メイン関数

    C言語の質問です! ランダムに九九の計算を出題して、キーボードから答えを入力し、正解かどうかを判定するプログラムをつくりたいです。出題の部分をサブ関数、判定の部分をメイン関数として作成する場合、どのようなプログラムの書き方になるのか、教えてください! #include<stdio.h> #include<stdlib.h> #include<process.h> void kakezan(void); void answer(void); void hanrei(void); int a,b,c; int main() { printf("やめるときは、100と入力してください。\n");   while(1){ kakezan(); answer(); hantei(); } return 0; } void kakezan(void) { a=rand() %10; b=rand() %10; printf("%d×%d=",a,b); } void answer(void) { scanf("%d",&c); if(c==100) exit(0); } void hantei(void) { if(c==a*b) printf(">>正解\n"); else printf(">>不正解\n"); printf("\n"); return; } 一応考えてみたのですが、 ちゃんと、判定→メイン  出題→サブ関数になっているのかなとおもって・・・   このプログラムであっているのでしょうか??

  • 3目並べのプログラムについての質問です

    以下のようにプログラムをつくりました #include <stdio.h> #include <stdlib.h> #include <time.h> void cleanSquare(void); void hand(char); void hand_CPU(char); void printSquare(void); void judge(void); void three(char, char, char); char square[3][3]; int nokori = 9; int main( void ) { cleanSquare(); printSquare(); while(1) { printf("Your turn.\n"); printf("Input (x,y) :"); hand('o'); printf("CPU chose (x,y):"); hand_CPU('x'); } } void cleanSquare(void) { int x, y; for(x = 0; x < 3; x++) { for(y = 0; y < 3; y++ ) { square[x][y] = ' '; } } } void hand(char mark) { int h, v; scanf("%1d%1d", &h, &v); while(square[h][v] != ' ' ) { printf("%1d-%1dは埋まっています。再入力(横縦):", h, v); scanf("%1d%1d", &h, &v); } square[h][v] = mark; nokori--; printSquare(); judge(); if(!nokori) { printf("引き分け\n"); exit(1); } } void hand_CPU(char mark) { int h, v; srand(time(NULL)); //scanf("%1d%1d", &h, &v); h = rand() % 3; v = rand() % 3; printf("(%d,%d)\n", h, v); while(square[h][v] != ' ' ) { printf("%1d-%1dは埋まっています。再入力(横縦):", h, v); scanf("%1d%1d", &h, &v); } square[h][v] = mark; nokori--; printSquare(); judge(); if(!nokori) { printf("Tie \n"); exit(1); } } void printSquare(void) { int cnt; printf("\n 0 1 2\n"); printf(" -------------\n"); for(cnt = 0; cnt < 3; cnt++) { printf("%1d| %c | %c | %c |\n", cnt, square[0][cnt], square[1][cnt], square[2][cnt]); printf(" -------------\n"); } } void judge(void) { int x, y; for(y = 0; y < 3; y++) { three(square[0][y], square[1][y], square[2][y]); for(x = 0; x < 3; x++) { three(square[x][0], square[x][1], square[x][2]); three(square[0][0], square[1][1], square[2][2]); three(square[2][0], square[1][1], square[0][2]); } } } void three(char a, char b, char c) { if(a == ' ') { return; } if(a == b && b == c) { if(a == 'o') { printf("Win! \n"); } else { printf("Lose. \n"); } exit(1); } return; } 以前、学校の課題としてでたものを復習していたのですが、わからない部分がでてきました。 このプログラムを次のように改造したいのですが、どのように改造すればいいのかわかりません 1.ゲーム全体を関数化する main関数でこの関数を呼び出すと何回もゲームができるようにする int game(int n)と宣言しようと考えています 2.マス目の大きさを関数game()が引数として受け取ったnを、n×nのマス目でゲームができるようにする nは、ゲームごとにmain関数で入力 10×10までの大きさ 3.自分の番の時に、座標を入力する時に負の値が入力されたら、ゲームを終了させる 4.勝敗の記録と表示 例えば、引き分けを0、勝ちを1、負けを2、途中終了を-1 を戻り値として返すようにして、途中終了以外の場合はゲームの成績を 勝ち:3、負け:2、引き分け:0のように表示する 5.ゲーム終了後に続けるか、やめるかの選択 文字を一文字入力して、'y'なら1を返し、'n'なら0を返す それ以外の文字だったら、再入力させるという処理を関数化する int newgame(void)として宣言しようと考えています また、この関数の戻り値が0の場合プログラムの終了、1なら新しいゲームの開始 です。長くて申し訳ないですm(_ _)m よろしくお願いしますm(_ _)m

  • C言語

    ファイルデータ(11,22,33,0,44)を読み込んで表示することを5回繰り返すプログラムを作りたいのですが分かりません。 さらに出来ればファイルデータが0でなければ表示し、0を読み込んだら終了するwhile文でのプログラムも教えてください。 途中経過 #include <stdlib.h> #include <stdio.h> int main(void) { int x = 0,i; FILE *infile; infile = fopen ("test.txt", "r"); if(infile == NULL) { fprintf(stderr, "test.txtが開けません\n"); exit(1); } i = 0 while(1){ i++; fscanf(infile, "%d", &x); printf("%d\n", x); if(i = 5)break; } fclose(infile); return 0; } ここまでで実行すると11しか表示されません。 これまでの質問分かるかたどなたか教えてくださいお願いします。

  • 可変長引数の扱い

     以下のプログラムが、 Hello,world. Hello, という出力しかしません。どうしてでしょう?  もしこういったことはcでは無理なのだとすれば、printfやsyslogなどのフォーマット指定のある出力関数のラッパーを書く他のいい方法があるんでしょうか? #include <stdio.h> #include <stdarg.h> #include <stdlib.h> void messout(const char *format, ...); int main(void) {   char *str = "world.";   printf("Hello,%s\n", str);   messout("Hello,%s\n", str);   exit(0); } void messout(const char *format, ...) {   va_list list;   va_start(list, format);   printf(format, list);   va_end(list); }

  • リスト

    リスト構造にしたいのですがどうすればいいでしょうか。 #include <stdio.h> #include <stdlib.h> #include <string.h> struct toy { char name[10]; int number; struct toy next; }; /*プロトタイプ宣言*/ void omocha_toy(struct toy *x); int main( void ) { struct toy *x; if((x =(struct toy *)malloc(sizeof(struct toy))) == NULL) { fprintf(stderr,"エラー\n"); exit(1); } sprintf("x -> name,"Osarusan"); x->score = 12; omocha_toy(x); return 0; } void omocha_toy(struct toy *x) } printf("%s",x->name); printf("%d\n",x->number); } このプログラムで2つ目3つ目をリスト構造を使って作りたいんです。 お願いします。

  • ifについて

    C言語を最近学び始めました。 以下をコンパイルし、実行しても予期せぬ結果になってしまい、困っています。 #include <stdio.h> #include <time.h> #include <stdlib.h> void retry(int); int main(void); int main(void) { int x,y,yn; srand(time(NULL)); x = rand()%6 +1; //Player y = rand()%6 +1; //CPU printf("Player:%d\n",x); printf("CPU:%d\n",y); if(y<<x){printf("Player > CPU\n");} else if(x<<y){printf("Player < CPU\n");} else {printf("Player = CPU\n");} retry(yn); return 0; } void retry(int yn) { printf("\nRetry ?(Yes=1/No=0)>"); scanf("%d",&yn); if (yn==1){printf("\n\n");getchar();main ();} else if(yn==0){printf("\n\nend");exit(0);} else {retry(yn);}; } サイコロを2人が振り、目が大きいほうが勝ちというものなのですが、 「Player:3 CPU:6 Plyaer>CPU」 といった具合にx,yの値に関わらず「Plyaer>CPU」と表示されます。 何が原因なのでしょうか。 よろしくお願いします。

  • お願いします。

    0から9までの数字を入力しあたりかはずれかを表示するプログラム。 #include<stdio.h> #include<time.h> #include<stdlib.h> int main(void){ int r,a; printf("0から9までの数字を入力してください。\n"); scanf("%d",&a); srandom(time(NULL)); r = random()%10; printf("%d \n",r); if(a==r){ printf("アタリ\n");} else{ printf("ハズレ\n");} return 0; }

  • 解説お願いします。

    0から9までの数字を入力しあたりかはずれかを表示するプログラム。 #include<stdio.h> #include<time.h> #include<stdlib.h> int main(void){ int r,a; printf("0から9までの数字を入力してください。\n"); scanf("%d",&a); srandom(time(NULL)); r = random()%10; printf("%d \n",r); if(a==r){ printf("アタリ\n");} else{ printf("ハズレ\n");} return 0; } 例えば%10は何のためにあるのかとか・・

  • malloc関数の使い方について(初心者)

    膨大なデータ数を扱うためにmalloc関数を用いて配列にデータを格納し、それを表示するプログラムを考えました。コンパイルはできるのですが、実行するとエラーが起こります。freeの開放の仕方が間違っているのでしょうか?よろしくお願いします。 /*ソース*/ #include <stdio.h> #include <stdlib.h> #define N 130000 int main(void) { double *p; int i; p = malloc(N); if(!p){ printf("割り当てエラー"); exit(1); } for(i=0;i<N;i++){ p[i]=i; printf("%f\n",p[i]); } free(p); }