• ベストアンサー

Cプログラムが終了しない

MacのOSXでMPWを使ってCのプログラミングを始めました。プログラムの最後にreturn 0;を入れているのに実行すると終了しないまま止まってしまいます(エラーは起っていないようです)。今は強制終了させていますが、なぜプログラムが終了しないのでしょうか。またMPWについて詳細に解説されているサイトなどありましたら教えて頂けませんか。

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

  • ベストアンサー
  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

こんにちは C言語で、プログラムの最後にreturn 0;を書いてあっても、ここまでたどり着かなければ終了しないです。 どこかで、無限ループしていませんか。 forループ whileループ doループ gotoによるループ 等ですね。 ところどころにデバッグ用に puts("debug : コメント"); なんてものを仕込んで、プログラムの動作を確認して見ましょう。 まあ、ソースが小さければ補足して頂いてもかまいませんが。

grothendieck
質問者

補足

早速のご回答ありがとうございます。プログラムは非常に小さく、ループは含みません。下にプログラムの全文を示します。二つ目のprintf文を実行後にプログラムが終了になりません。 #include <stdio.h> int main(void){ int y,x=5; y=x++; printf("y=%d x=%d\n",y,x); x=5; y=++x; printf("y=%d x=%d\n",y,x); return 0; }

その他の回答 (1)

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.2

こんにちは、No.1のarukamunです。 取りあえず、Windowsの環境でコンパイルして実行して見ましたが、ハングはしませんし、文法的にもハングする要因が見つかりません。 y=5 x=6 y=6 x=6 と表示して、正常に終了します。 もしかすると、Macでは int main() {  ・・・   return 0 ; } とかがいけないのでしょうか。 int main(void) を void main(void) にして return 0; を削除してみてはいかがでしょうか?

grothendieck
質問者

お礼

ご回答ありがとうございます。どうやらMPWで作ったプログラムを走らせるとMPWが自動的に起動され、プログラムを終了させるにはMPWのメニューバーにあるFileでquitを選択しなければならないようです。

関連するQ&A

  • C言語でプログラムを書いています

    C言語でプログラムを書いています コンパイルに成功し、実行すると 「****.exeは動作を停止しました」 というエラーが出て、実行が強制終了されてしまいます このエラーはどのような場合に出るものであって、その解決法などご存知の方がいたら 教えていただきたいと思います 解説が載っているHPのURLでも構いませんので、よろしくお願いします

  • PowerMac Debugger

    iBook(OSX)のclassic環境でMPWのCプログラミングをしようとしていますが,まだ初心者です。MPW ToolZone FTPsiteからPowerMac Debuggerをダウンロードしてきたのですが、debuggerのマニュアルがなくて困っています。マニュアルのあるサイトはないのでしょうか。またPowerMac Debuggerについて解説してあるサイトがありましたら教えて頂けないでしょうか。

    • ベストアンサー
    • Mac
  • MPW-GMでのCのプログラミング

    MacのMPW-GMでCのプログラミングをしていますが、まだ初心者です。Windows上で動いていたCのプログラムを持ってきてMPW-GMのprogram typeでSIOW App.と指定してコンパイルしたところ、conio.h (コンソールからのIO?)というヘッダファイルが見つからないというエラーになりました。この行を消去してコンパイルするとgetchというexternal reference(コンソールからの文字読み込み?)がunsolvedというエラーになりました。そこで教えて頂きたいのですが、 (1)program typeでApplicationsとSIOW App.の違いは  何でしょうか。 (2)conio.hやgetchの代わりになるものがあるのでしょうか。 以上よろしくお願いします。

    • ベストアンサー
    • Mac
  • ActivePerlでプログラムを実行するとMS-DOSプロンプトが強制終了する。

    Perlを勉強し始めた者です。 Perlの構築方法等が書かれた本を元にPerlの動く環境を作って早速やって みているのですが、Perlプログラムを実行させるとMS-DOSプロンプトが エラーを発し、DOSウィンドウが強制的に終了させられてしまいます。 その後は再起動をかけないと、同様のエラーが出てDOSウィンドウが 開きません。 これはPerlというよりWindows側の問題のような気もするのですが、何か 解決策がありましたらぜひお願いします。このままですと、Perlでの プログラミングなど到底できません。 以下に私の環境を記します。 OS:Windows Me Perl:ActivePerl ver5.6.1 build 633 httpd:AN HTTPD Browser:Internet Explorer 6.0 エラー内容: (このエラーは別のウィンドウが出てそこに表示されます) 「------------------------------------------------------------- このプログラムで無効な処理が発生したため、強制終了されます。 すべてのプログラムを終了してから、コンピュータを再起動してください。 プログラムで頻繁にエラーが発生する場合は、「スタート」ボタンを クリックして、「ヘルプ」をクリックし、「トラブルシューティング」 の「MS-DOSプログラムに関する問題」を参照して下さい。         [OK]    [詳細(D)] プログラムが無効な操作を実行しようとしました。 エラーが起きたアドレス:06AB:20A6 サービスへの割り込み:なし  -------------------------------------------------------------」 ウィンドウズが起動して初めてPerlプログラムを実行する時はうまく 結果を返します。が、何回か実行させると突然、上のようなエラー メッセージが出てきて強制的にDOSウィンドウが閉じられます。 どなたかこのエラーの回避方法をご存じの方、おられましたらぜひぜひ お教え下さい。宜しくお願いします。

  • C,C++プログラムの強制終了時の原因解析方法?

    JavaやFlexのエンジニアで最近Cをはじめた初心者です。 OpenCVを使ってハフ変換のプログラムを作っています。 AIRアプリから、NativeProcessとして5秒毎に呼び出されて、ディスク上の画像からハフ変換で直線を検出する簡単なプログラムですが、時々強制終了してしまい、原因わからず悩んでいます。 特にWin7 32bitの環境で強制終了になりやすい。(WinXPではまだ出たことがないです) 強制終了時のメッセージは Problem Event Name: APPCRASH Application Name: testC.exe Exception Code: c0000005 のような感じです。 Vistual C++ 2008 Expressで開発したため、デバッグモードでテストしたが、特に問題は見つかりませんでした。 何回か実行されて、そして「不明」なタイミングで強制終了する現象です。 そのタイミングは5分後とか30分後とか何時間後とかさまざまでまったく原因分からないです。 ただし、一度強制終了が出たら、このAIRプログラムを再稼働させると、10分ぐらい以内に強制終了になるっていう謎なヒント?もあります。 強制終了時にもっと詳しいログみたいなものを取ってデバッグしたいですが、その方法を教えていただきたいです。 いろいろ検索しましたが、dumpとかC#とか.NETとかいろいろ出てきてどれなのかは判断できません。 ヒントになるURLあれば、教えてください。

  • C言語で、自分で作った関数内で終了させるには

    C言語なのですが、自分でエラーチェックをする関数を作りました。 エラーを検出した時点でプログラムを終了させたいのですが、 どのようにすればいいのでしょうか? return 0; はmain関数を終了させるときに使うのはわかるのですが… 初歩的な質問かもしれませんが、よろしくお願いします。

  • MPWでCをするには?

    MacでC/C++を勉強したいと思い、toysmithさんから教えていただいたMacintosh Programmer's Workshopをダウンロードしました。しかし、説明書というか「introduction to MPW」と「Building & Managing Programs in MPW」が英語でしかも膨大な量なのです。とりあえずてっとりばやくCを使えるようにするにはどこから手を付ければよいのでしょうか?地道に最初から訳しながら読んでいくしかないのでしょうか?それとも根本的に別な方法で勉強するのがよいのでしょうか?教えてください。

  • Cのプログラムがコンパイル出来なくて困っています。

    初めまして、こんにちは。初心者ですがよろしくお願いします。 Cのプログラムがコンパイル出来なくて困っています。 プログラムの内容は #include<stdio.h> main(void) { printf("test\n"); return 0; } という簡単な内容で問題点はないのですが、以下のようなエラーが出てきます。 ビルド開始 C:\FF90\bin\fcc /c @C:\DOCUME~1\root\LOCALS~1\Temp\lyliomph.src Bad file descriptor cpp: 重大なエラー: 致命的なエラーを検出しました。翻訳を終了します。 ビルド処理を中断しました。 ビルド中断 他のパソコンでは実行する事が出来るのですが私がいつも使用しているパソコンのみ実行する事が出来なくて困っています。 使用しているコンパイラは「Fortran 90/C Workbench 開発マネージャ V1.0L21」です。 エラー2行目の「C:\FF90\bin\fcc /c @C:\DOCUME~1\root\LOCALS~1\Temp\lyliomph.src」に何かあるのかと思い、見たのですがそれらしき物も見当たりません。 環境変数もちゃんと設定していますし、他のコンパイラ(CPad for Borland C++Compiler や cygwin)でも実行する事が出来なく、また、上記のプログラム以外のプログラムでも同じエラーが出てきます。 もう私程度の知識ではどのような原因があるのか分からず、八方塞で困っています。 言葉足らずな部分が多々あるかと思いますがどうかよろしくお願いします。

  • 終了しない

    画面にネットワークのアイコンが点滅して 終了できません。 強制終了して、インストールCDを入れて 「アップルマーク」+「コントロール」+ 電源ボタンを押して強制再起動を実行して、 「C」ボタンを押しつづけても このアイコンが点滅するだけです。 そのうちOSXマークと?マークが交互に点滅します。 この現象の直前にしていた作業は OS9.2からOS10.1に変えるために 起動ディスクからの再起動でした。 iMac  OS9.2とOSXが入ってます。

    • 締切済み
    • Mac
  • MS-DOSが強制終了

    MS DOSを使用するプログラムを立ち上げると毎回 強制終了されてしまいます。 仕事に必要なプログラムで大変困っています。 表示は以下の通りです 『このプログラムは不正な処理を行った為強制終了します。すべてのプログラムを終了して再起動してください』 『プログラムあ無効な操作を実行しました』 エラーが起きたアドレス:037C:00E4 サービスの割り込み 無し 一旦このプログラム自体をアンインストールして入れ直そうとしてみましたが、やはりMS DOSのところで同様に表示されるので直すべきところはMS DOS ですよね?

専門家に質問してみよう