C언어 오류 질문드립니다.
글쓴이: seojh1431 / 작성시간: 화, 2014/11/25 - 3:35오후
#include <stdio.h> #define _CRT_SECURE_NO_WARNINGS #define BUFFER_SIZE_MAX 8192 int main(int argc, char *argv[]) { FILE *pFile; int i=0; if(argc < 2) { printf("There are no argument.\n"); return 1; } for(i = 1; i < argc; i++) { pFile = fopen(argv[i], "rb+"); // 여기서 오류가 뜹니다. if(pFile == NULL) { printf("{%s} file is not exist, or open error!\n", argv[i]); continue; } } }
Forums:
compile 환경이랑 어떤 오류가 나는지를 적어
compile 환경이랑 어떤 오류가 나는지를 적어 주시는 것이 좋을 것 같군요.
제 환경에서는 잘 동작 합니다.
ubuntu 14.10, gcc 4.9.1
microsoft visual c++ 2010 express 입니다
오류는
1>------ 빌드 시작: 프로젝트: 연습, 구성: Debug Win32 ------
1> dasjd.c
1>c:\users\1-생활실206\documents\visual studio 2010\projects\연습\dasjd.c(30): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(234) : 'fopen' 선언을 참조하십시오.
1>LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다.
========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========
이거네요... vc++6.0 에서도 잘 돌아가는걸로 알고있습니다.. 여기서만 안되는건지... 뭐가 문젠지 모르겠씁니다 ㅜㅜ
답변
fopen 함수가 안전하지 않을 수 있으니 fopen_s를 대신 사용하라는 경고입니다. 경고를 무시하려면 _CRT_SECURE_NO_WARNINGS 옵션을 사용하라는데
코드를 보니 그냥 매크로로 _CRT_SECURE_NO_WARNINGS를 정의하셨군요. 아래 링크 참조하세요. VS2013으로 테스트했는데 잘 됩니다.
http://blog.naver.com/ambidext/220161992052
http://blog.naver.com/nawoo/220185206383
저는 이렇게 생각했습니다.
정말 잘 해결되었씁니다. 감사합니다
ㄴㅇ
댓글 달기