C言語関係掲示板

過去ログ

No788 returnとexitの違い

[戻る] [ホームページ]
No.9798

「returnとexit」&「screen.h」
投稿者---すず(2003/10/15 19:43:10)


ヘッダファイルのところに
#include "screen.h"
があるのですが、これが何を意味してるのかわかりません。

returnで終わる文と
exitで終わる文があるのですが
この違いはどこにあるのですか?


簡単なことですが
誰か教えてくださいっっ!!!!!

No.9803

Re:「returnとexit」&「screen.h」
投稿者---RAPT(2003/10/15 20:38:56)


>#include "screen.h"
#include ディテクティブについて調べてみてください。

また、screen.h は、ANSIにない、独自のヘッダファイルでしょうから、
screen.hが何ものなのかは、作った当人に確認するか、そのソースを
読んでみるしかありません。

>returnで終わる文と
>exitで終わる文があるのですが
>この違いはどこにあるのですか?
return文は、その関数を終了し、その関数の呼び出し元へ処理を戻します。
exit()関数は、プロセスを終了し、そのプロセス呼び出し元(OS)へ処理を戻します。

No.9805

Re:「returnとexit」&「screen.h」
投稿者---すず(2003/10/15 21:41:09)


>>#include "screen.h"
>#include ディテクティブについて調べてみてください。
>また、screen.h は、ANSIにない、独自のヘッダファイルでしょうから、
>screen.hが何ものなのかは、作った当人に確認するか、そのソースを
>読んでみるしかありません。
とりあえず、ソースを読むことが早道ってっことでしょうか?
標準ファイルとは違うってことですよね。
ありがとうございます。
調べてみたいと思います。


>return文は、その関数を終了し、その関数の呼び出し元へ処理を戻します。
>exit()関数は、プロセスを終了し、そのプロセス呼び出し元(OS)へ処理を戻します。
ということは、
returnで終わるところをexitで終わっても
問題はないってことでしょうか・・・・??

初心者すぎてごめんなさいです。

No.9807

Re:「returnとexit」&「screen.h」
投稿者---RAPT(2003/10/15 23:47:23)


> returnで終わるところをexitで終わっても
> 問題はないってことでしょうか・・・・??
main()関数以外でそれを行なうと問題アリアリです。

以下のサンプルコードで、
1.存在するファイル名を指定した時
2.存在しないファイル名を指定した時
3.何も指定しなかった時
の動作を確認してみてください。

#include <stdio.h>    /* printf, FILE, fopen, fclose */
#include <stdlib.h>    /* exit */

void sub(const char *filename)
{
    FILE *fp = NULL;

    printf("  sub()を開始します。--->\n");
    fp = fopen(filename, "r");
    if( fp == NULL ){
        printf("    %s ファイルが開けませんでした。\n", filename);
        exit(1);
    }
    fclose(fp);
    printf("  --->sub()を終了します。\n");
}

int main(int argc, char *argv[])
{
    printf("main()を開始します。===>\n");
    if( argc >= 2 ){
        sub(argv[1]);
    }else{
        printf("\n  # ファイル名を指定してください\n  # %s ファイル名\n\n", argv[0]);
    }
    printf("===>main()を終了します。\n");
    return 0;
}


No.9809

Re:「returnとexit」&「screen.h」
投稿者---RAPT(2003/10/15 23:49:42)


ちなみに、exit()は、関数ですが、returnは予約語ではありますが、
関数ではありません。ifやwhileなどと同じ仲間です。


No.9816

Re:「returnとexit」&「screen.h」
投稿者---すず(2003/10/16 02:08:14)


今、RAPTさんからいただいたソースの中身と
格闘しています。

初心者なので時間がかかりますが
がんばってみようと思います。
動作確認の仕方がいまいちわからないのです。
このサンプルコードでどこを変更させるのですか?

学校の研究でいきなりCのプログラムを読むことになったので
とても難解なのです。
ご指導ください。。。。



No.9817

Re:「returnとexit」&「screen.h」
投稿者---通りすがる人(2003/10/16 02:26:14)


いや、多分実行して違いを実感してください。という意味だと・・・。


この投稿にコメントする

削除パスワード

No.9832

Re:「returnとexit」&「screen.h」
投稿者---RAPT(2003/10/16 22:56:46)


いや、書き換えないで下さい。通りすがる人さんのおっしゃるように、
動作を確認してもらいたいだけです。

まずは、何も考えずに、ただ、コードの上から下までをコピー&ペーストして、
コンパイルして実行してみてください。
return文とexit()関数の処理の違いが見えるかと思います。

このソースでは、main()関数、sub()関数の呼び出し直後と終了間際にメッセージを
出力するようにしており、実行ファイルに渡す引数で処理を分岐させています。

実行イファイル名を ctest.exe としたとき、
ctest <enter>
ctest 実在するファイル <enter>
ctest 実在しないファイル <enter>
として実行し、ソースと見比べてみてください。


No.9858

Re:「returnとexit」&「screen.h」
投稿者---すず(2003/10/18 16:10:41)


手順を細かく教えていただいでありがとうございます。

これでまたC言語学習をがんばりたいと思います。

やってみますっ!!!

また疑問点がでたら、投稿させていただきますので
よろしくお願いします。