ビルドできても、実行でエラーが出る理由がわかりません。 – プログラミング – Home

ビルドできても、実行でエラーが出る理由...
 
通知
すべてクリア

[解決済] ビルドできても、実行でエラーが出る理由がわかりません。


けんけん
 けんけん
(@けんけん)
ゲスト
結合: 23年前
投稿: 11
Topic starter  

あるプログラムを作って、ビルドは何の問題もなくできるんですけど、
プログラムを実行しようとすると、
「不正な処理を行ったので強制終了します」
と出てしまいます。
この原因にはどのようなことが考えられるんでしょうか?

ちなみに、同じプログラムをUNIXを使ったパソコンで実行(ktermで)すると、
何の問題もなく実行されます。
(UNIXにしか通用しないようなプログラムは使っていません)

かなりの初心者で、初歩的な質問ですけど、よろしくお願いします。


引用未解決
トピックタグ
coshat
 coshat
(@coshat)
ゲスト
結合: 23年前
投稿: 12
 

GUI プログラムなのに printf を使っているとか・・・
ちゃんとコンソールプログラムにしてますか?


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

ビルドでは,あくまで文法上のエラーが無い限りエラーは起きません。
ロジックなどのエラーはデバッグで取り除く必要があります。

デバッガでステップ実行などをしてみればよいでしょう。


返信引用
けんけん
 けんけん
(@けんけん)
ゲスト
結合: 23年前
投稿: 11
Topic starter  

デバッガのこともよくわからないんですけど、
文法上エラーがなくて、どこにエラーがあるんでしょうか?

VisualC++のコンパイラだからできないと言うこともあるんでしょうか?
試しにフリーソフトの「LSIC(LCC?)」というコンパイラでやってみましたが、
きちんとできました。

参考までにどのようなプログラムかというと、

「「sample.txt」の内容に、行番号をつけるというものです」

#include <stdio.h>

void main(void)
{
FILE *fp;
char s[50][80];
int i,j,m;

fp=fopen(sample.txt,r);

i=0;m=0;

while(1){

fgets(s[i], 79, fp);

if(s[i][0]=='\n')break;

i++;m++;
}

fclose(fp);

fp=fopen(sample.txt,w);

for(j=0 ; j<=m ; j++)
{fprintf(fp,%d: %s,j+1,s[j]);}

fclose(fp);

}

(sample.txtの内容の例)
HELLO!!
Good morning!!

(実行後)
1:HELLO!!
2:Good morning!!
3:

です。
また、「sample.txt」はきちんとしたフォルダに存在しています。
よろしくお願いします。


返信引用
toru
 toru
(@toru)
ゲスト
結合: 23年前
投稿: 48
 

Sample.txtの最終行に改行が無い場合にAccess Violationを引き起こして「不正な...」になりました。


返信引用
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 24年前
投稿: 217
 

> また、「sample.txt」はきちんとしたフォルダに存在しています。

VC の統合環境から実行した場合はカレントディレクトリは、
実行ファイルのあるディレクトリにはなりません。(プロジェクトのあるディレクトリです)
大丈夫でしょうか?

デバッガを使えばどこで落ちているかすぐに分かるはずなんですが、
使い方が分からないというなら、せめて printf をはさむなりしてどこまで処理が進んでいるか調べてみては。


返信引用
けんけん
 けんけん
(@けんけん)
ゲスト
結合: 23年前
投稿: 11
Topic starter  

無事実行することができました。ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました