gpt4 book ai didi

检查文件是否存在,否则创建一个新文件

转载 作者:行者123 更新时间:2023-12-01 23:04:46 26 4
gpt4 key购买 nike

我正在尝试创建一个函数来检查文件是否存在,如果存在,它将打开它以更新它,如果它不存在,它将创建一个新文件。

void readFunc(void) {
FILE *input;
char filename[N];

printf("Write textfile: ");
scanf("%s", filename);

if(input == NULL) {
printf("\nFile doesn't exist. Creating a new one!\n\n");
input = fopen(filename, "w+");

} else {
printf("\nFile exists!\n\n");
input = fopen(filename, "r+");
}
}

这就是我的代码现在的样子。我知道这可能是非常错误的,但我想知道如何思考才能让它发挥作用。

我稍后会插入指针,以便它能很好地与主函数一起工作。

最佳答案

因为TOCTOU races ,最好的方法是降低一个级别并使用 open,与 fopen 不同,它允许您指定“打开此文件进行读写,保留现有内容,如果它不存在则创建它”:

FILE *ensure_file(const char *fname) 
{
int fd = open(fname, O_RDWR | O_CREAT, 0666);
if (fd == -1) {
perror(fname);
return 0;
}
return fdopen(fd, "r+");
}

关于检查文件是否存在,否则创建一个新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71158269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com