fopen()不在C中工作

时间:2011-09-10 09:40:23

标签: c fopen

我修好了。感谢您的帮助。

我现在已经查看了很多文章,论坛帖子和主题;但是,没有人真正解决了我的问题。问题是我的fopen("file.txt", "w");没有创建文件。

代码:

//
//Includes
#include <stdio.h>

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")以确定它是否未将其保存在应保存的位置,但我实际上很难找到该目录(我不知道它是否是临时的,但是甚至所以文件应该在那里?)。显然我并没有质疑图书馆的实际有效性,呃,暗示我用fopen没有给我的预期?

我无法向我提供任何有用的信息。一切似乎都应该起作用;我只是没有得到一个文件。如果你不想帮忙就不要写,请避免再使用smartass评论。*

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

5 个答案:

答案 0 :(得分:8)

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

  

fopen()无效

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

  

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

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

答案 1 :(得分:7)

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

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

答案 2 :(得分:2)

文件已创建,但未达到您预期的位置。

检查工作目录(getcwd)。

答案 3 :(得分:1)

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

man errno可以帮助您

答案 4 :(得分:1)

我遇到了同样的问题。我正在使用 VSC 进行编码,我尝试了与您相同的代码,但它也不起作用。所以,我在其他问题中读到了大多数防病毒软件都在阻止 VSC。禁用我的 avast 防病毒软件后,问题已解决。