用 C fopen 保存文件

Posted

技术标签:

【中文标题】用 C fopen 保存文件【英文标题】:Save file with C fopen 【发布时间】:2011-05-02 05:27:28 【问题描述】:

我用 C 编写了一个程序,但它不允许保存在 c:\SomeDirectory\afile.txt

我正在使用这个:

FILE* m_hFile = fopen("c:\\SomeDirectory\\afile.txt", "a+t");
fprintf(m_hFile, "testing");
fclose(m_hFile);

为什么?是否有可以保存的已定义文件夹?

SomeDirectory 是先前创建的。

我使用的是 Windows 7 操作系统。

【问题讨论】:

fopen 来自 C 标准库,而不是 C++ 标准库。 @Okami: 足够的访问权限问题? 您的模式字符串中的"t" 是非标准且无效的。将FILE * 类型的表达式转换为FILE * 肯定是没有意义的。 【参考方案1】:

如果fopen 遇到错误,它会设置errno 变量来指示发生了什么错误。您可以对此进行测试,或者更简单,使用perror 打印出一条错误消息,告诉您出了什么问题:

FILE* m_hFile = fopen("c:\\SomeDirectory\\afile.txt", "a+t");
if (m_hFile == NULL) 
  perror("fopen");

【讨论】:

在 windows XP 上它可以工作,在 Win 7 上出现问题。我正在以管理员身份执行... 您是否尝试过使用perror?您收到什么错误消息? @Okami:这是确切的信息还是从其他语言翻译过来的?无论如何,还有一点需要注意:以管理员身份登录与以管理员身份运行程序不同 - 为此,您需要以管理员身份启动程序,例如。通过右键单击并使用“以管理员身份运行”。 @Okami 是的,在 Windows 7 上使用 "Run as" 只是在 Administrator 桌面上工作还不够。 @Okami:是的,在 Windows Vista 和 7 中,管理员用户已被削弱(正如他们在 MMO 中所说的那样)。它不再拥有从前的权力。【参考方案2】:

听起来“SomeDirectory”可能不存在。您可以使用 C++ 创建文件夹,但您需要检查一个文件夹是否已经存在。仅调用 open 命令不会自动创建文件夹。 :)

【讨论】:

以上是关于用 C fopen 保存文件的主要内容,如果未能解决你的问题,请参考以下文章

用c语言如何读取和保存jpg图片文件?

c语言刚刚接触文件操作。关于fopen()很简单问题。

用fopen打开当前文件夹中名为a的子文件夹中的一个.txt文件但这个.txt的文件名是保存在一个变量里的

如何创建一个二进制文件?用C语言调用.

fopen函数的用法

c语言怎么用文件保存和读取 结构体数组/