c语言编写一个完整的函数,完成从一个给定的完整的文件路径 (如”C:\My Documents\Software Test 1.00.doc”)中,析取文件名,扩展名和文件所处目录的功能
时间: 2024-02-12 11:04:46 浏览: 145
下面是一个实现该功能的 C 语言函数:
```c
#include <stdio.h>
#include <string.h>
void analyzeFilePath(char* filePath, char* fileName, char* fileExt, char* fileDir) {
char* pFileName = strrchr(filePath, '\\'); // 反向查找最后一个 '\' 字符的位置
if (pFileName == NULL) { // 没有找到 '\' 字符,说明文件路径不合法
printf("Invalid file path!\n");
return;
}
strcpy(fileName, pFileName + 1); // 将文件名复制到 fileName 字符串中
char* pFileExt = strrchr(fileName, '.'); // 反向查找最后一个 '.' 字符的位置
if (pFileExt == NULL) { // 没有找到 '.' 字符,说明文件没有扩展名
printf("No file extension!\n");
strcpy(fileExt, "");
} else {
strcpy(fileExt, pFileExt + 1); // 将扩展名复制到 fileExt 字符串中
*pFileExt = '\0'; // 将文件名和扩展名分开
}
strncpy(fileDir, filePath, pFileName - filePath + 1); // 复制文件所处目录到 fileDir 字符串中
fileDir[pFileName - filePath + 1] = '\0'; // 确保字符串以 '\0' 结尾
}
int main() {
char filePath[] = "C:\\My Documents\\Software Test 1.00.doc";
char fileName[256], fileExt[256], fileDir[256];
analyzeFilePath(filePath, fileName, fileExt, fileDir);
printf("File name: %s\n", fileName);
printf("File extension: %s\n", fileExt);
printf("File directory: %s\n", fileDir);
return 0;
}
```
运行结果如下:
```
File name: Software Test 1.00
File extension: doc
File directory: C:\My Documents\
```