質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

3回答

4005閲覧

C言語でexitを使う方法

ksoto

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2019/12/19 02:19

visual studio 2013でC言語を用いてヒープの学習をしています。
初心者なのでわかりやすく教えていただけると幸いです。

学習を進めるうえでexitが使えずに進めることができなくなってしまいました。
どうすればよいのでしょうか
下のエラーが出ます
error C3861: 'exit': 識別子が見つかりませんでした
IntelliSense: 識別子 "exit" が定義されていません

C

1#pragma warning(disable: 4996) 2 3#include <stdio.h> 4 5#define MAX_N 65535 6#define NUM 20000 7 8 9void swap(int data[], int v, int w) 10{ 11 int tmp; 12 13 tmp = data[v]; 14 data[v] = data[w]; 15 data[w] = tmp; 16} 17 18void downheap(int *data, int v, int n) 19{ 20 int w; 21 22 if (v > (n / 2)) return; /*子ノードを持たないノードであれば何もしない*/ 23 24 w = 2 * v; 25 if (w + 1 <= n && data[w] < data[w + 1]) w++; 26 27 if (data[v] < data[w]){ 28 swap(data,v,w); 29 downheap(data,w,n); 30 } 31} 32 33int main(int argc, char *argv[]){ 34 int data[MAX_N],*p; 35 int n, i = 1, j; 36 FILE *fp; /*読み込み用のファイルポインタ*/ 37 38 p = data + 1; 39 40 /*引数チェック*/ 41 if (argc != 2){ /*引数が1つでなければエラー終了*/ 42 fprintf(stderr, "Usage: %s <data-file>\n", argv[0]); 43 exit(1); 44 } 45 46 /*ファイルオープン&エラー処理*/ 47 if ((fp = fopen(argv[1], "r")) == NULL){ 48 fprintf(stderr, "File not found: %s\n", argv[1]); 49         exit(1); 50 } 51 52 /*fファイルからのデータ読み込み*/ 53 while (fscanf(fp, "%d",p++) != EOF) i++; 54 n = i - 1; 55 56 /*printf ("before heap...\n"); */ 57 58 for (i = n / 2; i >= 1; i--){ 59 swap(data, 1, i); 60 downheap(data, 1, i - 1); 61 } 62 63 /* printf("after sort...\n");*/ 64 return 0; 65}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/12/19 02:27

stdlib.h をインクルードするとどうなりますか?
ksoto

2019/12/19 02:34

できました!素早い回答ありがとうございます!
guest

回答3

0

C では宣言なしの関数を呼び出すことができます。
おそらく、ソースファイルの拡張子を .cpp にしていて、
C++ としてコンパイルされているんでしょう。
ファイルの拡張子を .c にしないと、
C でプログラミングしていることにはなりません。

投稿2019/12/19 23:36

編集2019/12/19 23:44
kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

exit関数はstdlib.hファイルで宣言されています(man)。

#include <stdlib.h>の行を、#include <stdio.h>の前後に追加してください。

投稿2019/12/19 02:29

maisumakun

総合スコア145199

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ksoto

2019/12/19 02:34

また他のエラーでプログラム自体は動きませんでしたがexitのエラーはなくなりました!ありがとうございました!
guest

0

process.hstdlib.hをincludeしてください。
ドキュメントを読めば必要なヘッダは書いてありますよ。
exit

投稿2019/12/19 02:33

SHOMI

総合スコア4079

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2019/12/19 02:38

process.hはWindows/DOS系がメインのヘッダファイルで、Linux環境にはファイルそのものがなさそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問