0

我有一个文件,我想获取文件的大小。我只能使用_wfopen_wfopen_s打开文件,因为我的文件路径类型是std::wstring.

FILE* p_file = NULL;
p_file=_wfopen(tempFileName.c_str(),L"r");
fseek(p_file,0,SEEK_END);

但我收到一个错误

error C2220: warning treated as error - no 'object' file generated  
4

1 回答 1

0

要摆脱您的错误消息,您需要修复生成警告的问题。

如果编译此代码:

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

int _tmain(int argc, _TCHAR* argv[])
{
    FILE* p_file = NULL;
    std::wstring tempFileName = L"c:\\test.txt";
    p_file=_wfopen(tempFileName.c_str(),L"r");

    if(!p_file)
    {
        perror("Open failed.");
        return 0;
    }

    fseek(p_file,0,SEEK_END);
    fclose(p_file);

    return 0;
}

您将收到以下警告:

警告 C4996:“_wfopen”:此函数或变量可能不安全。考虑改用 _wfopen_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。详细信息请参见在线帮助。

所以,听它说什么,然后执行以下操作:

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

int _tmain(int argc, _TCHAR* argv[])
{
    FILE* p_file = NULL;
    std::wstring tempFileName = L"c:\\test.txt";
    _wfopen_s(&p_file, tempFileName.c_str(),L"r");

    if(!p_file)
    {
        perror("Open failed.");
        return 0;
    }

    fseek(p_file,0,SEEK_END);
    fclose(p_file);

    return 0;
}

_CRT_SECURE_NO_WARNINGS有一种方法可以通过输入Project Properties-> C/C++-> Preprocessor->来关闭此警告Preprocessor Definitions,但您应该始终更喜欢这些功能的安全替代品。

此外,在fseek您检查您的 p_file 指针是否为NULL.

于 2013-03-22T10:34:00.793 回答