用 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 保存文件的主要内容,如果未能解决你的问题,请参考以下文章