c 기초 내용 질문있습니다@
#include
#include
#define Max 256
#pragma warning(disable:4996) //비쥬얼 스튜디오2012에서 scnaf를 쓰기위해서 썼습니다
void openF();
int lineF();
int Fline;
int main(){
int exit=0;
char cmd[20];
while(exit==0){
printf("press command:");
scanf("%s",cmd);
if(strcmp(cmd,"fopen")==0)
openF();
else
printf("undefine command!\n");
}
return 0;
}
int lineF(){
int n=0;
char s;
FILE* asd=fopen("asd.txt","rt");
printf("2\n");
if(asd=NULL){
printf("3\n");
printf("File open error\n");
}
printf("4\n");
while ( (s=fgetc(asd)) != EOF)
//컴파일시 오류는 없는데 실행했을때 '4'까지 출력하고 여기서 오류나는것같습니다
if (s== '\n')
n++;
printf("Read %d lines\n",n);
fclose(asd);
return n;
}
void openF(){
FILE* DB;
Fline=lineF();
......
}
소스입니다
소스가 좀 길어 무관한내용은 약간 생략했습니다
알고리즘 책 예제를 제 생각데로 적어봤습니다
예제는
사용자로부터 명령어를 입력받아 해당 함수를 실행하는 간단한 프로그램입니다
문제는 lineF()에서 일어나는 것같습니다
위의 소스를 컴파일 하면 오류는 없습니다 그러나 프로그램을 실행하고
명령어를 입력하고 lineF에서 '2'와'4'를 화면에 출력하고
//2,4는 밑의 오류가 어디서 나오는건지 알기위해 쓴겁니다
Debug Assertion Failed! Program:... File: ...\fgets.c Line: 41 Expression: (stream!=NULL)
이라고 오류가 납니다
fgets를 썼을때도 비슷한 오류가 납니다
왜그런걸까요
답변해주시면 감사하겠습니다
asd=NULL
= --> ==
asd=NULL
= --> ==
감사합니다 자꾸 헷갈리네요 ;;ㅎㅎ 그리고 파일이
감사합니다 자꾸 헷갈리네요 ;;ㅎㅎ
그리고 파일이 없는 상태에서 read를 해서 그랬나 봅니다
조엘온 소프트웨어에서는 상수를 먼저 적는 방법을 제시하고있습니다.
조엘온 소프트웨어에서는 NULL == asd 로 상수를 앞에 쓰는 방법을 제시하고 있습니다.
실수로 = 대입연산자를 사용한다고 하면 컴파일 에러가 나서 쉽게 찾을 수 있기때문이랍니다.
감사합니다 기초적인 실수를 했네요 ㅎㅎ;
감사합니다 기초적인 실수를 했네요 ㅎㅎ;
댓글 달기