Iv'e столкнулся с этим фрагментом кода, который предполагает вернуть мне расширение файла:
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, если таковой существует.