【问题标题】:Won't create txt file C program不会创建 txt 文件 C 程序
【发布时间】:2013-10-31 13:35:23
【问题描述】:

这是我的代码

#include <stdio.h> 
int main() 
{ 
FILE *file; 
file = fopen("file.txt","a+"); 

fprintf(file,"%s","test :)");
fclose(file); 

return 0; 
}

不明白为什么它不会创建一个txt文件 帮助

【问题讨论】:

  • 出了什么问题?如果你单步执行会发生什么?添加代码以检查fopen() 是否成功,I/O 可能会失败。
  • a+ 模式的预期行为是在文件不存在时创建文件。我的预感是 fopen() 调用因特定原因而失败(是的,它可能会失败,因此请始终检查返回值...)
  • 检查您当前的工作目录(查找 getcwd 和 printf 它或其他东西)。我的猜测是,您可能没有对其尝试在其中创建 file.txt 的文件夹的完全权限,但就像下面的人所说的那样,它可能是任意数量的东西。如果要更改当前工作目录,请在 fopen 之前使用 chdir,或者在 fopen 中硬编码所需的目录,例如 fopen("C://users/me/documents/file.txt","a+");
  • 昨天还可以,但今天不行了……我什么都没做……

标签: c file


【解决方案1】:

请尝试 perror 检查您是否有权写入文件。这是大多数时候的问题。在 fopen 之后添加这个

if (!file)
perror("fopen");

【讨论】:

  • 我试了一下,但它仍然无法使用 if 循环,但 iets 什么也没打印,所以我不知道 T.T
  • 如果您使用的是 Visual Studio,只需在 FILE *file = fopen("file.txt","a+"); 上放置一个断点并调试它。查看当光标越过这条线时监视窗口中的文件会发生什么,然后在此处更新我
【解决方案2】:

您需要检查程序中的错误。 fopen() 可能由于多种原因而失败。我们可以检查errno,也可以使用perror / strerror 打印有用的消息。

#include <stdio.h> 
#include <stdlib.h>

int main() 
{ 
    FILE *file = fopen("file.txt","a+"); 
    if (file == NULL) {
        perror("Failed to open the file");
        exit(-1);
    }

    fprintf(file,"%s","test :)");
    fclose(file); 

    return 0; 
}

例如,如果一个文件存在于当前目录中,但属于不同的用户:

[8:40am][wlynch@watermelon /tmp] ./foo
Failed to open the file: Permission denied

【讨论】:

  • 我试了一下,但它仍然不能与 if 循环一起工作,但 iets 什么也没打印,所以我不知道 T.T 我认为我有权限
【解决方案3】:

Create a file if one doesn't exist - C 这里是答案......标记下的那个在我的s.o.上为我工作。您尝试做的方式不适用于Windows,但适用于Linux。抱歉说了我之前说过的话……这两个操作系统都有其光明的一面,也不是那么光明的一面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多