Windows

VC6.0 디버깅할때...만 Debug assertion failed와 fscanf.c 에러가 나오는 이유?

by 흑엽 posted Mar 12, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

 

#include "stdafx.h"
#include <stdlib.h>

#define INPUT_FILE "input.txt"
#define OUTPUT_FILE "output.txt"

int T;
FILE *inf, *outf;
 void main()

 inf = fopen(INPUT_FILE, "r");
 outf = fopen(OUTPUT_FILE, "w");

 fscanf(inf, "%dn", &T);
}

위의 코드로 컴파일을 시도 할때는 문제가 없는데
디버깅할 때만...
아래와 같은 창이 뜨고 에러메세지가 나오는 이유는??

debug assertion failed
------------
file : fscanf.c
Line : 54
Expression : stream !=Null
------------

#define INPUT_FILE "input.txt"의
"input.txt" 은 "input.txt" 즉....같은 폴더위치에 있는 파일을 가리키는 것임.

소스코드위치가
  C:testcode 일 경우...

컴파일후 exe파일이 
   C:testcodeDebug에 생성된다..
   따라서 컴파일된 exe파일이 있는, 현재 위치에 해당하는 C:testcode\Debug 폴더 안에
   "input.txt" "output.txt" 집어넣고 결과를 보기 때문에 에러가 없다.

하지만 디버깅할때는
  현재 폴더 위치가 소스코드가 있는 C:\testcode 가 됨으로...
  "input.txt"  "output.txt" 파일이 debug안에만 있다면 당연히 파일을 찾을 수 없게 되며
  따라서 파일 포인터의 값 때문에, 디버깅 도중에 에러가 발생함.(저는.. 부록CD소스 테스트할때 가끔 발생해요;;)

"input.txt"  "output.txt"를 C:\testcode<--여기에 복사하면 됨.

TAG •