从目录中获取具有特定扩展名的文件

时间:2018-05-24 16:34:49

标签: c file operating-system

我遇到了这段代码,假设要返回一个文件的扩展名:

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路径(如果存在)。

0 个答案:

没有答案