c言語でのエラーの解決方法

このQ&Aのポイント
  • c言語のプログラムで整数を入力して結果を表示する際に、エラーが発生しました。
  • エラーメッセージとして「a.exeは動作を停止しました」と表示され、プログラムの正常な動作ができません。
  • 問題の解決策として、ウイルスバスター2011を使用してウイルスを除去するなどの対策を試してみましたが、問題は解決されませんでした。
回答を見る
  • ベストアンサー

Vista c言語でのエラー

c言語のプログラムで、整数を入力して結果を表示するプログラムなのですが、 コンパイルして、a.exeを実行して、整数を入力したら、 Microsoft Windowsから 「a.exeは動作を停止しました」 「問題が発生したため、プログラムが正しく動作しなくなりました。」 と出ました。 それまでは順調に動いていたのに、それ以降類似のプログラムでも同じようになりました。 しばらくは「問題のレポートと解決策」にて 「Trojan.PWS.Legmir.AD / W32.Ahlem.A@mmウイルスをコンピュータから除去する」という Windowsの警告メッセージが表示されましたが、繰り返しているうちに出なくなりました。 「a」という名前が悪いと聞いて、名前を長短いろいろ変えてもだめでした。 ほかの「a.exe」も消してみましたがだめでした。 Windows Vista MinGW環境でコマンド プロンプトを使用してます。 ウイルスバスター2011も使ってます。

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

  • ベストアンサー
noname#131384
noname#131384
回答No.1

その現象はWindows Vista特有で、Virus Busterをインストールしている時に限り表示される、エラーメッセージです。 私がいろいろ調べて、いくつかおすすめのサイトを見つけましたのでそちらを見てもらってもいいと思います。 http://d.hatena.ne.jp/fkm/20071116 http://social.technet.microsoft.com/Forums/ja-JP/windowsvistaja/thread/c3383de2-f6bc-482c-a13d-69f088a55829/ この2つです。 原因としてはVirus BusterがVistaの初期設定で動作していると、一文字の.exeファイルが、よくある「隠れトロイの木馬」と誤認してでるエラーメッセージです。よって、ウイルスに感染したわけではありません。 解決法としては、文字数を変えてもエラーが消えないというのはおかしいです。 まず、例えば「test.notepad」とコマンドラインに入力して「test」という名前のノートパッド新規ファイルを起動、プログラムソースを書いて上書き保存。その後、test.gcc -o test.exeと入力してコンパイル成功はして、プログラムの実行とはいくのでしょうか。 そこまではうまくいく場合は「Virus Buster」の一時停止を行わないと、毎回「エラー」が出ます。毎回、停止するのが面倒なときは、せっかく買ってもったいないですけど、プログラミングに専念するのなら「アンインストール」が一番簡単です。 コンパイル自体成功しない場合は、「Virus Buster」をアンインストールすれば解決します。 他のウイルス対策ソフトなら、トロイの木馬と誤認しませんよ。Nortonとかなら最良ですけどね。 でも、プログラミングに専念しないなら、毎回、Virus Busterを「一時停止」→「再開」しても十分です。

tomacchan
質問者

補足

丁寧な回答ありがとうございます。 上にあげてもらったサイトは質問前に見ていたのですが… test.cを -o test.exeとし、コンパイラは成功します。 その後、「整数を入力してください: 」と出て 数字を入力後、Enterキーを押すととまります。 ウイルスバスターを停止しても、変化なしです…

関連するQ&A

  • C言語についてなんですが

    プログラムの作成で分からないところがあります。 「二つの整数値を読み込み、小さいほうの数以上で大きい数以下の 整数を全て加えた値を表示するプログラムをdo文を使って 作成せよ。」 下の図のようにしたいです。 2つの整数を入力せよ。 整数A:37 整数B:28 28以上37以下の全整数の和は325です。 よろしくお願いします。

  • C言語の問題です。

    以下のプログラムはどうなりますか? ----------------------------------------------------------------------------- 整数xを入力すると,A√B の形に変形するプログラムを作成.ただし,xが負の場合 A√B i と虚数を表示すること. また,√1 の場合はルート部は表示せず,また整数部が1の場合も同様に表示しない. -----------------------------------------------------------------------------

  • C言語のプログラミングについて

    私は大学2年なのですが、現在留年するかしないかというぎりぎりのところに立っています。好意で単位をなんとかしてくれる教授を探し出し、C言語の宿題を出されました。ですが私は根っからの文型で、プログラミングなどしたこともありません。教科書を図書館で借りて読んでみるものの、すぐ理解できるような難易度ではないことだけがわかりました。 そこでもしよろしければ、プログラムを教えてもらいたいです。 1.キーボードから整数の入力を繰り返す。0以下の値が入力されたら終了し、入力した値の中の最小値を表示する。また、それが何番目に入力された値かもあわせて表示する。(6つの整数を入力、最後の整数は0を入力することとする。) 実行結果例 整数を入力: 6 整数を入力: 5 整数を入力: 4 整数を入力: 3 整数を入力: 2 整数を入力: 1 整数を入力: 0 最小値は6番目の1 2.キーボードから整数の入力を4回繰り返し、それらの値を2次元配列Aの各要素に順に代入し、その行列のそれぞれの要素と行列式を表示するプログラムを作成せよ。 実行結果例 1行1列の要素? 6 1行2列の要素? 5 2行1列の要素? 4 2行2列の要素? 3 行列A = 6 5 4 3 行列式 = 2 3.キーボードから西暦年を入力し,その年が閏年のときは「○○年はうるう年です」と表示し,そうでないならば「○○年はうるう年ではありません」と表示するプログラムを作成しなさい. なお,閏年の定義は以下の通りである. ・西暦年が4で割り切れる年は閏年 ・ただし,西暦年が100で割り切れる年は平年 ・ただし,西暦年が400で割り切れる年は閏年 実行結果例 西暦年を入力してください. 1987 1987 年はXXXXXXXX 一時的ではありますが、皆様のお力をお借りしたいです。 もちろん、ここでお答えをもらってもわからないままにせずに、無事進級することができたら独学で勉強しようとは思ってます。 なお、理系の人たちはVisualBasicというソフトを使っているようです。よろしくお願い致します。

  • C言語

    C言語初心者です。 整数を入力しその数が偶数ならプログラムを終了する。奇数ならそれが3の倍数か3の倍数でないかを表示する。入力した数が奇数ならこの操作を何回も繰り返すプログラムを作りたいです。 このプログラムのソースを教えてください。

  • C言語、成績は4194432?

    いつも大変お世話になり誠にありがとうございます。 標記の件。 おかしな実行結果になりました。 どうしてでしょうか? ご回答の程宜しくお願い申し上げます。       記 コード #include <stdio.h> int main(void) { int res; printf("成績を入力してください。\n"); scanf("%d", &res); printf("成績は%dです。\n", res); switch(res){ case 1: printf("もっとがんばりましょう。\n"); break; case 2: printf("もう少しがんばりましょう。\n"); break; case 3: printf("さらに上をめざしましょう。\n"); break; case 4: printf("たいへんよくできました。\n"); break; case 5: printf("たいへん優秀です。\n"); break; } return 0; } 実行結果 C:\MinGW>test20.exe 成績を入力してください。 A 成績は4194432です。 C:\MinGW>test20.exe 成績を入力してください。 b 成績は4194432です。 C:\MinGW>test20.exe 成績を入力してください。 v 成績は4194432です。 度々申し訳ございません。 ご回答の程宜しくお願い申し上げます。

  • C言語 %表示

    二つの整数値を読み込んで、前者が後者の何%かを表示するプログラムを作成したいです。 #include<stdio.h> int main(void){ int no1,no2; printf("整数を入力してください。\n"); printf("整数A:"); scanf("%d",&no1); printf("整数B:"); scanf("%d",&no2); printf("Aの値はBの値の%f%%です。\n",(double)(no1/no2)); } Aの値はBの値の0.0000%です。となってしまいます。 上記のプログラムの訂正をお願いします。

  • c言語プログラム

    加減乗除および剰余の演算記号(+-* / %)と2つの整数を入力し、入力した2つの整数に対して入力した演算を施して表示するプログラムをif文ではなくswitch文を用いて作成しなさいなお、演算記号入力の際に間違った記号(+ - * / % 以外)を入力した場合は+を入力したものとして計算するものとしなさい。 ヒントで 変数としては入力演算記号に対応する変数op、入力する2つの整数に対応する変数m,n、答えに対応する変数ansを使うとよいでしょう宣言についてはopは記号なのでcharで宣言しますが、あとはすべて整数ですのでintで宣言 まずやることは演算記号以外の場合に+であることを表示するプログラムを組むと思うんですけど どうしたらいいのかわかりません力を御貸しください

  • c言語プログラミングの質問です。

    整数NとN個の整数を受け取り,受け取ったN個の整数のうち最大のものを表示するプログラムを記述せよ. ただし,N>0とする. 入出力例 入力 ⇒ 出力 3 2 1 8 ⇒ 8 5 13 14 11 12 15 ⇒ 15 2 -1 -2 ⇒ -1 という問題です。「3つの数の中から~」という場合はそれぞれa,b,cとおいて比較できるのですが、この問題のような場合はどうすればいいですか。

  • 棒グラフ C言語

    C言語)実行結果のような非負の整数を読み込んで棒グラフを表示させるプログラム[読み込んだ整数が-1である場合は整数の入力を表示して棒グラフの表示を行う。グラフは★一つで10、☆一つで1を表すこととする。配列を使う。数字を表示する際は3桁分のスペースを使う]はどう作成すればいいのでしょうか? 実行結果 非負の整数を入力してください。(-1が入力されれば即終了) 1:100 2:55 3:77 4:13 5:4 6:-1 1:100 ★★★★★★★★★★ 2: 55 ★★★★★☆☆☆☆☆ 3: 77 ★★★★★★★☆☆☆☆☆☆☆ 4: 13 ★☆☆☆ 5: 4 ☆☆☆☆

  • C言語のプログラムについて

    大学のテストの確認をしているのですが、この問題の回答がどうしても分かりません。どなたか教えてください。 9桁以内の整数を入力し、int型の変数に格納し表示するプログラムを作成しなさい。 ただし、先頭は、数字か「+」か「-」とし、それ以外はすべて数字とする。この条件に合わないものおよび10桁以上のものは、「入力エラー」として表示後、再入力を行うこと。 例えば「-123456」や「45678989」は、整数としてint型の変数に格納し、「abcd」や「123-234」は、「入力エラー 」を表示し、再入力を行う。 ---------------------------------------------------------------- また、自動判定の都合上、表示は以下の表示例に準拠すること。 【 23-234 *12345 -123456 を入力した例】 入力エラー 入力エラー 整数は、-123456 です。 お願いします