意味のわからないバグ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
正五郎

意味のわからないバグ

#1

投稿記事 by 正五郎 » 13年前

最近C言語を勉強しているのですが、訳のわからないバグに遭遇しました。

コード:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
	FILE *fp;
	int i = 0;
	int c;
	
	if(argc == 1){
		printf("Miss Command\n");
		return 0;
	}
	
	while(i < argc){
		if((fp = fopen(argv[i], "r")) == NULL){
			printf("FILE OPEN ERORR");
			exit(1);
		}
		while((c = getc(fp)) != EOF){
			printf("%c", c);
		}
		i++;
	}
	return 0;
}

上記のソースをgccコンパイルに通し、コンパイルしたところ、
画像
のように実行結果の上にバイナリをそのまま表示したような文字列が表示されます。そのあとには正常な動作をしています。

これはコンパイラの問題なのでしょうか?
それとも他に原因があるのでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 意味のわからないバグ

#2

投稿記事 by みけCAT » 13年前

argv[0]には普通自分自身のファイル名が格納されているので、
起動した実行ファイルの中身が表示されていると思われます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

正五郎

Re: 意味のわからないバグ

#3

投稿記事 by 正五郎 » 13年前

なんと!そんな簡単なことだったとは・・・・・・・・。

iを1にしたらきちんと動作しました。ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る