#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<--여기에 복사하면 됨.