인프런 커뮤니티 질문&답변

김성범님의 프로필 이미지
김성범

작성한 질문수

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

파일 입출력

_wfopen_s(&file, path.c_str(), L"wb"); 실패하는 경우

작성

·

53

0

image.png

 

void Tilemap::SaveFile(const wstring& path)

{

{

FILE* file = nullptr;

::_wfopen_s(&file, path.c_str(), L"wb");//writebinary

 

::fwrite(&_mapSize.x, sizeof(_mapSize.x), 1, file); <- 여기에서 크러쉬 나면서 뻗어버립니다.

}

 

이럴 경우 관리자 권한 문제일까요?

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 김성범님.

문의주신 _wfopen_s 함수 호출과 관련된 문제를 해결하려면 몇 가지 가능한 원인을 살펴볼 수 있습니다. 코드에서 파일을 여는 과정에서 문제가 발생한 것 같습니다. 특히, _wfopen_s가 실패하고 난 뒤 fwrite를 호출하는 부분에서 크러쉬가 발생합니다.

  1. 파일 열기 실패: _wfopen_s 함수가 실패하면 file 포인터가 nullptr로 설정됩니다. 파일이 제대로 열리지 않은 상태에서 fwrite를 호출하면 프로그램이 크래쉬할 수 있습니다. 파일 포인터가 nullptr이 아닌지 검사한 후에 fwrite를 호출해주세요.

    if (file != nullptr)
    {
        ::fwrite(&_mapSize.x, sizeof(_mapSize.x), 1, file);
        fclose(file);
    }
    else
    {
        // 오류 처리 코드 추가
        wprintf(L"파일을 열 수 없습니다: %s\n", path.c_str());
    }
    
  2. 경로와 권한 문제: 파일 경로가 잘못되었거나 권한 문제로 인해 파일이 열리지 않을 수 있습니다. 파일 경로에 접근할 수 있는지 확인하고, 해당 경로에 쓰기 권한이 있는지 확인하세요. Windows의 경우, 파일을 생성하거나 수정하려면 충분한 권한이 있어야 합니다.

  3. 경로의 유효성 확인: path.c_str()가 올바른 경로 문자열을 반환하는지 확인합니다. 경로가 잘못되었거나 공백 등 특수문자가 포함되어 있으면 문제가 발생할 수 있습니다.

아래에 유사한 문제를 논의한 게시물을 링크합니다. 더 많은 정보를 얻을 수 있으니 참고하세요:

이와 같은 방식으로 문제를 해결할 수 있기를 바랍니다. 제가 드린 정보가 도움이 되셨기를 바라며, 추가적인 질문이 있으시다면 언제든지 이어서 질문해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김성범님의 프로필 이미지
김성범

작성한 질문수

질문하기