我写了下面的代码,在xcode和vscode上运行都没有错误。但是,我无法得到任何输出文件名. txt。它不在我的任何文件夹中。
如果有人能帮上忙,我会很感激的。
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp=NULL;
fp = fopen("filename.txt","w+");
if (fp!= NULL){
fprintf(fp,"%s %d","Hello",555);
}
fclose(fp);
return 0;
}
3条答案
按热度按时间8hhllhi21#
运行它没有错误
fclose(NULL)
是未定义行为(UB),因此不清楚文件无法打开时是否没有错误。在打开成功/失败的两种情况下打印一些内容-并带有
'\n'
。用于添加错误信息。强大的代码检查所有I/O操作。
我也尝试过perror方法,它显示filename.txt:拒绝批准。稍后。
检查filename.txt是否为只读,是否正被其他应用程序(编辑器?)使用,或者是否存在其他权限限制。
jhiyze9q2#
如果文件没有成功打开,那么代码什么也不做(除了关闭一个空的
FILE
指针,这是未定义的)。你应该使用perror()
来指示为什么它不能被打开:很有可能您已经有一个不可写的
filename.txt
,或者您位于一个无法创建新文件的目录中,但是我们需要错误消息来确定它没有打开的原因。或者,您运行的工作目录与您所认为的不同--这是您应该调查的问题(可能会向stderr生成一些日志,以指示 * 在哪里 * 创建文件)。
lstz6jyr3#
我运行了你的代码,它工作正常check this image
但是,您是如何编译它的?您是否记得运行a.out/execution?