用c语言写一个输入文件名判断文件是否存在,如果不存在提示重新输入的函数
时间: 2023-02-11 18:28:24 浏览: 192
```c
#include <stdio.h>
#include <stdlib.h>
void check_file_exist(char *file_name) {
FILE *fp = fopen(file_name, "r");
if (fp == NULL) {
printf("文件不存在,请重新输入文件名:");
scanf("%s", file_name);
check_file_exist(file_name);
} else {
fclose(fp);
}
}
int main() {
char file_name[100];
printf("请输入文件名:");
scanf("%s", file_name);
check_file_exist(file_name);
printf("文件存在");
return 0;
}
```
上面的代码实现了用 C 语言写一个输入文件名判断文件是否存在的功能。如果文件不存在,会提示重新输入文件名,直到文件存在为止。
相关问题
用c语言写一个判断文件是否存在的函数
### 回答1:
你可以使用C语言的`fopen`函数来判断文件是否存在。如果文件存在,`fopen`会返回文件指针;如果文件不存在,则返回`NULL`。
下面是一个示例函数:
```C
#include <stdio.h>
int file_exist(const char* filename) {
FILE* file = fopen(filename, "r");
if (file) {
fclose(file);
return 1;
}
return 0;
}
```
使用方法:
```C
if (file_exist("test.txt")) {
printf("The file test.txt exists.\n");
} else {
printf("The file test.txt does not exist.\n");
}
```
需要注意的是,此函数只能判断文件是否存在,并不能判断是否有权限读取文件。
### 回答2:
要用C语言写一个判断文件是否存在的函数,可以使用标准库中的<sys/stat.h>头文件中的`stat()`函数。下面是一个示例函数的实现:
```c
#include <stdio.h>
#include <sys/stat.h>
int isFileExists(const char* filename)
{
struct stat buffer;
return (stat(filename, &buffer) == 0);
}
```
这个函数的参数是文件名的字符串,返回值是一个整数,如果文件存在则返回1,否则返回0。该函数使用`stat()`函数来获取文件状态,并将结果存储在`buffer`结构体中。如果`stat()`函数返回零,则表示文件存在,函数返回1;否则,文件不存在,函数返回0。
要使用这个函数,可以调用它,并传入要判断的文件名作为参数。例如:
```c
int main()
{
const char* filename = "example.txt";
if(isFileExists(filename))
{
printf("%s exists.\n", filename);
}
else
{
printf("%s does not exist.\n", filename);
}
return 0;
}
```
在这个示例中,函数`isFileExists()`将检查是否存在名为"example.txt"的文件,并根据结果打印相应的信息。
### 回答3:
以下是用C语言写一个判断文件是否存在的函数的示例:
```c
#include <stdio.h>
int fileExists(char* filename) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
return 0; // 文件不存在
} else {
fclose(file);
return 1; // 文件存在
}
}
int main() {
char* filename = "example.txt";
if (fileExists(filename)) {
printf("文件存在\n");
} else {
printf("文件不存在\n");
}
return 0;
}
```
这个函数接受一个文件名作为参数,并尝试以只读模式打开该文件。如果成功打开文件,函数会关闭文件并返回1,表示文件存在。如果打开文件失败,函数会返回0,表示文件不存在。
在主函数中,我们将一个示例文件名传递给fileExists函数,并根据返回值打印出相应的结果。
请注意,这只是一个简单的示例函数,对于一些特殊情况(例如文件不存在或者无法打开文件),可能需要进行更详细的错误处理。
写一个Linux c语言打印指定目录下文件名的函数
可以使用 `opendir()` 和 `readdir()` 函数来实现该功能。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
void list_files(const char *path) {
DIR *dir;
struct dirent *entry;
dir = opendir(path);
if (dir == NULL) {
perror("opendir");
exit(EXIT_FAILURE);
}
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_REG) { // 如果是普通文件
printf("%s\n", entry->d_name);
}
}
closedir(dir);
}
```
在该函数中,首先通过 `opendir()` 函数打开指定目录,如果打开失败,则输出错误信息并退出程序。然后通过 `readdir()` 函数循环读取目录下的文件项,对于每个文件项,如果是一个普通文件,则输出文件名。最后通过 `closedir()` 函数关闭目录。需要注意的是,这里只输出了普通文件的文件名,如果需要输出其他类型的文件名,需要修改 `if` 语句中的条件判断。
阅读全文