C 中的文件管理:使用 fopen 尝试创建/覆盖文件失败

问题描述 投票:0回答:1

我目前正在学习 C 语言课程,并正在做一项需要我的程序处理文件的练习。作为一个例子,只是为了我自己的理解,暂时不尝试做任何更复杂的事情,我尝试运行以下程序:

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

int main(){
    FILE *datei = fopen("employees.txt", "w");
    fprintf(datei, "Anna\n");

    fclose(datei);
    return 0;
}

如果我理解正确的话,这通常应该在我的 C 文件的同一文件夹中生成 .txt 文件,以防该文件在该文件夹中不存在,或者如果存在则覆盖它:但是,无论我多少次运行程序不会生成文件,也不会覆盖文件(如果存在)。

然后我认为我的 *.c 文件保存在云端是问题所在,所以我直接将其保存在我的电脑上 - 同样的结论

我继续插入明确的路径:

 FILE *datei = fopen("C:\\Users\\für\\JustCoding", "w");
    fprintf(datei, "Anna\n");

同样的结果...

我重新启动了我的电脑(Windows 11 Home)并重复上述步骤......什么都没有......

现在我很确定这与编译错误无关,因为我的终端确实显示程序已执行(好吧,我可能是错的,但我愿意纠正),所以我目前处于立场 -仍然

你们中有人遇到过类似的问题吗?如果是,你是如何解决的?欢迎任何可以提供帮助的人这样做......

谢谢你

c codeblocks file-management file-manipulation
1个回答
0
投票

这段代码是正确的,应该在程序的当前工作目录中创建(或覆盖)一个名为“employees.txt”的文件。

您面临的问题可能与以下因素之一有关: a) 文件正在创建,但不在您要查找的位置。 b) 打开文件时出现错误,但您未捕获该错误。

为了解决这些可能性,让我们修改您的代码以包括错误检查并打印当前工作目录:

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

int main() {
    char cwd[1024];
    if (_getcwd(cwd, sizeof(cwd)) != NULL) {
        printf("Current working directory: %s\n", cwd);
    } else {
        perror("getcwd() error");
        return 1;
    }

    FILE *datei = fopen("employees.txt", "w");
    if (datei == NULL) {
        perror("Error opening file");
        return 1;
    }

    fprintf(datei, "Anna\n");

    fclose(datei);
    printf("File 'employees.txt' should have been created or overwritten.\n");
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.