ページ 11

意味のわからないバグ

Posted: 2011年11月07日(月) 21:21
by 正五郎
最近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コンパイルに通し、コンパイルしたところ、
画像
のように実行結果の上にバイナリをそのまま表示したような文字列が表示されます。そのあとには正常な動作をしています。

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

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

Posted: 2011年11月07日(月) 21:29
by みけCAT
argv[0]には普通自分自身のファイル名が格納されているので、
起動した実行ファイルの中身が表示されていると思われます。

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

Posted: 2011年11月07日(月) 21:35
by 正五郎
なんと!そんな簡単なことだったとは・・・・・・・・。

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