我目前正在学习 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)并重复上述步骤......什么都没有......
现在我很确定这与编译错误无关,因为我的终端确实显示程序已执行(好吧,我可能是错的,但我愿意纠正),所以我目前处于立场 -仍然
你们中有人遇到过类似的问题吗?如果是,你是如何解决的?欢迎任何可以提供帮助的人这样做......
谢谢你
这段代码是正确的,应该在程序的当前工作目录中创建(或覆盖)一个名为“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;
}