0

当我硬编码cheminopen(chemin, O_RDONLY)文件名时,程序可以工作,但是当我离开时,open(chemin, O_RDONLY)我得到No such file or directory.

为什么不在chemintype_fichier 中使用?

当我使用printf("%s", chemin)时,type_fichier我得到'

int type_fichier(char * chemin) {
  int fp;
  if ((fp = open(chemin, O_RDONLY)) == -1) { perror(""); exit(0); }

  struct stat fileStat;
  if(fstat(fp, &fileStat) < 0)
    return 1;

  switch(fileStat.st_mode & S_IFMT) {
    case S_IFBLK:  printf("block device\n");            break;
    case S_IFCHR:  printf("character device\n");        break;
    case S_IFDIR:  printf("directory\n");               break;
    case S_IFIFO:  printf("FIFO/pipe\n");               break;
    case S_IFLNK:  printf("symlink\n");                 break;
    case S_IFREG:  printf("regular file\n");            break;
    case S_IFSOCK: printf("socket\n");                  break;
    default:       printf("unknown?\n");                break;
  }
}

int main(int argc, char *argv[]) {
  char fn = "file";
  type_fichier(&fn);
}
4

2 回答 2

6

您的错误在这里,您只分配 1 个字符fn

char fn = "file";
type_fichier(&fn);

你可能想要:

const char *fn = "file";
type_fichier(fn);
于 2013-06-04T20:24:06.340 回答
2

您正在使用char变量来存储字符串文字而不是 char 数组或等效的数组。

 int main(int argc, char *argv[]) {
  char fn[] = "file";
  type_fichier(fn);
}

给你....

于 2013-06-04T20:28:23.200 回答