获取后缀名代码viausl stdio
时间: 2024-12-08 18:14:13 浏览: 7
获取文件后缀名通常通过C++标准库中的`<string>`和`<filesystem>`头文件来实现。下面是一个简单的示例代码片段:
```cpp
#include <iostream>
#include <string>
#include <filesystem> // C++17引入,用于处理文件路径
std::string get_file_extension(const std::string& filename) {
namespace fs = std::filesystem;
size_t pos = filename.rfind('.');
if (pos != std::string::npos && pos > 0) {
return filename.substr(pos + 1);
}
return ""; // 如果没有找到后缀,则返回空字符串
}
int main() {
std::string file_path = "example.txt";
std::cout << "File extension: " << get_file_extension(file_path) << std::endl;
return 0;
}
```
这个代码首先查找`.`字符的位置,从该位置到字符串结束的部分就是后缀名。如果没有找到`.`,则表示文件名没有后缀,返回空字符串。
相关问题
用c获取获取文件名和后缀名
以下是用C语言获取文件名和后缀名的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char filename[100];
printf("请输入文件名:");
scanf("%s", filename);
char *dot = strrchr(filename, '.');
if (dot) {
printf("文件名为:%.*s\n", (int)(dot - filename), filename);
printf("后缀名为:%s\n", dot + 1);
} else {
printf("该文件没有后缀名。\n");
}
return 0;
}
```
在上面的代码中,我们首先使用`scanf`函数获取用户输入的文件名,然后使用`strrchr`函数查找文件名中最后一个`.`字符,如果存在,就将`.`字符后面的部分作为后缀名输出,否则输出“该文件没有后缀名”。注意,我们使用了`strrchr`函数而不是`strchr`函数,是因为后缀名通常出现在文件名的末尾,而`strrchr`函数从字符串的末尾开始查找。另外,我们使用了`%.*s`格式化字符串输出文件名,这是因为我们只需要输出文件名中`.`字符之前的部分,而不是整个字符串。
C语言通过dirent 获取文件名称,文件后缀名
通过 dirent.h 库函数,可以使用 dirent 结构体来获取文件名称和文件后缀名。dirent 结构体的 d_name 成员变量就是文件名称,可以使用 strchr() 函数来查找最后一个 '.' 的位置,然后再根据该位置来获取文件后缀名。
下面是一个示例代码:
```c
#include <stdio.h>
#include <dirent.h>
#include <string.h>
int main() {
DIR *dir;
struct dirent *entry;
dir = opendir(".");
if (dir == NULL) {
perror("opendir error");
return -1;
}
while ((entry = readdir(dir)) != NULL) {
// 判断是否为文件
if (entry->d_type == DT_REG) {
// 获取文件名称
printf("File name: %s\n", entry->d_name);
// 获取文件后缀名
char *dot = strrchr(entry->d_name, '.');
if (dot && dot != entry->d_name) {
printf("File extension: %s\n", dot + 1);
}
}
}
closedir(dir);
return 0;
}
```
该示例代码可以遍历当前目录下所有文件,输出文件名称和文件后缀名。需要注意的是,该方法只能获取文件后缀名,无法获取文件类型。
阅读全文