简单的fopen和fprintf无法正常工作

时间:2013-10-12 05:43:27

标签: c++ c fopen

我有一个简单的程序,可以打开文件并将文本写入文件。但是,fopen始终返回BadPtr,如Microsoft Visual c++, 2010中的调试模式所示。

以下是VS C++, 2010中显示的警告:

mysample\mysample\main.c(6): 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) : see declaration of 'fopen'

我认为警告是一个问题并使用fopen_s,但这也无法解决问题。以下是我的代码:

#include <stdio.h>

int main()
{
    FILE *fp;
    fp=fopen("c:\\hello.txt","w+");

    if(fp==NULL)
    {
        printf("\nfopen() error\n");
        return 1;
    }
    else
    {
        fprintf(fp,"\nThis is a sample text file\n");
    }

    fclose(fp);
    return 0;
}

在上面的代码中,流不会进入if(fp == NULL)条件,而是进入else部分,但是文件没有被创建。

请提供帮助。

2 个答案:

答案 0 :(得分:2)

如果您没有管理员权限

在编译目录中创建文件

fp=fopen("hello.txt","w+");

这将在mysample\mysample

中创建文件

您应具有管理员权限,才能在C:\

中创建文件

如果你有管理员权限打开命令提示,运行为管理员,然后通过给出名称来执行你的可执行文件。

如果您使用文件名fopen.c, 你会得到fopen.exe

只需从命令提示符运行fopen,它就会在C:\

中创建文件

答案 1 :(得分:1)

您的代码有效,但如果您想在C:\中创建文件,则需要管理员权限,请尝试将文件保存在程序的同一文件目录中,或运行管理员cmd并执行*.exe那里。