c语言编写一个完整的函数,完成从一个给定的完整的文件路径 (如”C:\My Documents\Software Test 1.00.doc”)中,析取文件名,扩展名和文件所处目录的功能
时间: 2024-02-12 12:04:16 浏览: 22
好的,以下是一个C语言函数,可以实现您要求的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void parse_file_path(char *file_path, char *file_name, char *file_extension, char *file_directory) {
char *token, *last;
char path_copy[strlen(file_path) + 1];
strcpy(path_copy, file_path);
// 解析文件名
token = strtok_r(path_copy, "\\", &last);
while (token != NULL) {
strcpy(file_name, token);
token = strtok_r(NULL, "\\", &last);
}
// 解析扩展名
token = strtok_r(file_name, ".", &last);
while (token != NULL) {
strcpy(file_extension, token);
token = strtok_r(NULL, ".", &last);
}
// 解析文件所处目录
int name_len = strlen(file_name);
int dir_len = strlen(file_path) - name_len;
strncpy(file_directory, file_path, dir_len);
file_directory[dir_len] = '\0';
}
```
这个函数使用了C语言的字符串处理函数,其中`strtok_r()`函数可以将字符串按照指定的分隔符分割成多个子字符串,`strcpy()`函数可以将字符串复制到指定的数组中,`strncpy()`函数可以复制指定长度的内容到指定的数组中。函数返回三个字符串,分别表示文件名、扩展名和文件所处目录。