到底时68行的fopen失败,还是84行的fopen失败啊?你先执行的时rs函数,还是save函数呢?
如果你初始并没有手工创建stu.data文件,那么rs函数中打开文件失败是正常的,不需要提醒。68行存储用w方式打开文件时,如果文件不存在,是会自动创建一个新文件的,而且如果文件已经存在,w方式打开会将文件内容清空的
如果是判断txt是否存在的话可以参考这个代码,使用file_exist()函数来判断
#include <stdio.h>
int file_exist(char *filename) {
FILE *fp = fopen(filename, "r");
if (fp != NULL) {
fclose(fp);
return 1;
}
return 0;
}
int main() {
char *filename = "test.txt";
if (file_exist(filename)) {
printf("File exists!");
} else {
printf("File does not exist!");
}
}
借助第三个文件c.txt,先将a.txt以及b.txt文件中的字符串按次序交叉复制到c.txt中,然后再将c.txt中的字符串复制到a.txt中(将a.txt中的原字符串覆盖)。
拓展:或者可以借助一个一维字符数组,用来存放两字符串交叉相接后的结果,然后再将此字符数组中的内容复制到a.txt文件中。(注:此方式较局限些)*
问题回答:
如何判断txt文件是否存在?
可以使用C语言中的access函数来判断文件是否存在。access函数需要两个参数,第一个为文件的路径,第二个为操作选项。操作选项有以下几种: F_OK:判断文件是否存在 R_OK:判断文件是否可读 W_OK:判断文件是否可写 X_OK:判断文件是否可执行 我们只需要使用F_OK选项来判断文件是否存在即可。示例代码如下:
#include <unistd.h> //需要用到access函数
int main()
{
if(access("file.txt", F_OK) == 0)
{
printf("文件存在");
}
else
{
printf("文件不存在");
}
return 0;
}
若文件不存在,应该如何解决现在的问题?
如果文件不存在,则需要先创建该文件。可以使用C语言中的fopen函数来创建文件,使用"w"选项来表示写入新文件。代码示例如下:
#include <stdio.h>
int main()
{
FILE *fp = fopen("file.txt", "w");
if(fp == NULL)
{
printf("文件打开失败");
return 0;
}
//文件写入操作
fclose(fp);//关闭文件
return 0;
}
如果文件已存在,fopen函数也会打开文件,并从文件开头开始写入,会清空文件中原有内容。如果想要在文件原有内容后面添加,可以使用"a"选项来打开文件,即fopen("file.txt", "a")。
以上是对问题的回答,若需要进一步了解如何写入文件,请参考参考资料中的第四段,若需要了解如何提取文件中的特定信息,请参考参考资料中的第二段。