c언어 질문입니다

gayeon298의 이미지

void main(int argc, char* argv[])
{
	FILE* source_file;
	int i;
	struct tokenType token;
 
	if (argc != 2) {
		fprintf(stderr, "Usage : scanner <source file name>\n");
		exit(1);
	}
 
	if ((source_file = fopen(argv[1], "r")) == NULL) {
		fprintf(stderr, "%s file not found \n", argv[1]);
		exit(-1);
	}
 
	do {
		for (i = 0; i < ID_LENGTH; i++)
			id[i] = ' ';
		token = scanner(source_file);
		fprintf(stdout, "Token ---> ");
 
		if (token.number == 5) {
			for (i = 0; i < ID_LENGTH; i++)
				fprintf(stdout, "%c", id[i]);
			fprintf(stdout, ": (%d, %d)\n", token.number, token.value.num);
		}
		else if (token.number == 4) {
			for (i = 0; i < ID_LENGTH; i++)
				fprintf(stdout, "%c", id[i]);
			fprintf(stdout, ": (%d, %s)\n", token.number, token.value.id);
		}
		else {
			for (i = 0; i < ID_LENGTH; i++)
				fprintf(stdout, "%c", id[i]);
			fprintf(stdout, ": (%d, 0)\n", token.number);
		}
	} while (!feof(source_file));
	fclose(source_file);
}

파일을 읽어오지 못하는데 왜 그런건가요? 소스코드가 잘못되었나요?

세벌의 이미지

#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char* argv[])
{
	FILE* source_file;
	int i;
	struct tokenType token;
 
	if (argc != 2) {
		fprintf(stderr, "Usage : scanner <source file name>\n");
		exit(1);
	}
 
	if ((source_file = fopen(argv[1], "r")) == NULL) {
		fprintf(stderr, "%s file not found \n", argv[1]);
		exit(-1);
	}
 
	do {
		for (i = 0; i < ID_LENGTH; i++)
			id[i] = ' ';
		token = scanner(source_file);
		fprintf(stdout, "Token ---> ");
 
		if (token.number == 5) {
			for (i = 0; i < ID_LENGTH; i++)
				fprintf(stdout, "%c", id[i]);
			fprintf(stdout, ": (%d, %d)\n", token.number, token.value.num);
		}
		else if (token.number == 4) {
			for (i = 0; i < ID_LENGTH; i++)
				fprintf(stdout, "%c", id[i]);
			fprintf(stdout, ": (%d, %s)\n", token.number, token.value.id);
		}
		else {
			for (i = 0; i < ID_LENGTH; i++)
				fprintf(stdout, "%c", id[i]);
			fprintf(stdout, ": (%d, 0)\n", token.number);
		}
	} while (!feof(source_file));
	fclose(source_file);
	return 0;
}