我遇到了这段代码,假设要返回一个文件的扩展名:
char* getFileNameExt(const char *filename) {
char *dot = strrchr(filename, '.');
if(!dot || dot == filename) return "";
return dot + 1;
}
但是,当我尝试使用它来提取参数目录中的文件的扩展名时,我得到了'getFileNameExt'错误的冲突类型。
这是我使用它的地方:
void getCFile(User* user, int userNum, char directory[LEN],char filePath[LEN]){
DIR* pDir = opendir(directory);
if (pDir == NULL){
sysCallFailureProcedure();
}
struct dirent* pDirent;
while((pDirent = readdir(pDir))!=NULL) {
if ((pDirent->d_type == DT_DIR) && (strcmp(pDirent->d_name, ".") != 0)
&& (strcmp(pDirent->d_name, "..") != 0)){
char dir[MAX_LENGTH]={};
strcpy(dir,directory);
int length = strlen(dir);
if (dir[length] != '/') {
strcat(dir, "/");
}
strcat(dir, pDirent->d_name);
getCFile(user, userNum, dir, filePath);
} else if (pDirent->d_type == DT_REG) {
const char* extension = getFileNameExt(pDirent->d_name);
if(strcmp(extension,"c") == 0) {
strcpy(filePath, pDirent->d_name);
strcpy(user[userNum].cfileDirPath, directory);
break; // todo: maybe remove break.
}
}
}
}
所有这些代码的目的是提取用户的cFileDirPath路径(如果存在)。