получение файла с определенным расширением из каталога - PullRequest
0 голосов
/ 24 мая 2018

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, если таковой существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...