fopen()不在C中工作

我修好了。 谢谢你的帮助。

我现在看了很多文章,论坛post和主题; 然而,没有人真正解决我的问题。 问题是我的fopen("file.txt", "w"); 不创建文件。

码:

 // //Includes #include  int main () { FILE *receipt = fopen("receipt.txt", "w"); //Create file fprintf(receipt, "Price: %.2f$", purchase); fprintf(receipt, "\nDiscount: %.2f$", discount); fprintf(receipt, "\nTax %%: %.2f%%", tax_pct); fprintf(receipt, "\nTaxes: %.2f$", tax); fprintf(receipt, "\nTotal Price: %.2f$", end_price); fprintf(receipt, "\n\nEnd of Receipt."); fclose(receipt); return 0; } 

我试过投入

 if(!receipt) { printf("Error!"); } else { fprintf(blabla); } 

但无济于事。

它根本不创建文件:/在Xcode和Mac上运行。 没有警告/通知或其他东西让我知道什么是错的。

*我尝试添加system("pwd")以确定它是否没有保存它应该保存的地方,但我很难找到该目录(我不知道它是否是临时的,但即便如此文件应该在那里?)。 显然,我并没有质疑图书馆的实际有效性,呃,暗示我用的是我不能给我的预期吗?

我不能让我发现任何有用的信息。 一切似乎都应该起作用; 我只是没有得到一个文件。 如果你不想帮忙就不写,请不要再做任何smartass评论了。*

另外,我删除了所有代码,但实际的fopen()fprintf()

试试perror 。 您可能没有权限或类似的东西。

 FILE *receipt = fopen("receipt.txt", "w"); if (!receipt) perror("fopen"); 

唯一有意义的解释是您没有权限在工作目录中创建文件,或者工作目录不在您要查找要创建的文件的位置。

fopen()不工作

嗯,当然有效。 您不应该认为标准库不起作用。

没有警告/通知或其他东西让我知道什么是错的。

调用fopen()后没有检查错误。 如果您没有检查错误,您希望如何将它们交付给您?

文件已创建,但不是您期望的文件。

检查工作目录( getcwd )。

您应该使用strerror格式化错误或perror以打印与errno匹配的系统错误。

man errno可能会帮助你