当我硬编码open(chemin, O_RDONLY)
中的chemin
到文件名时,程序工作,但当我离开open(chemin, O_RDONLY)
时,我得到No such file or directory
。
为什么不使用type_fichier中的chemin
?
当我在type_fichier
中使用printf("%s", chemin)
时,我得到'
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 devicen"); break;
case S_IFCHR: printf("character devicen"); break;
case S_IFDIR: printf("directoryn"); break;
case S_IFIFO: printf("FIFO/pipen"); break;
case S_IFLNK: printf("symlinkn"); break;
case S_IFREG: printf("regular filen"); break;
case S_IFSOCK: printf("socketn"); break;
default: printf("unknown?n"); break;
}
}
int main(int argc, char *argv[]) {
char fn = "file";
type_fichier(&fn);
}
你的错误在这里,你只分配了1个字符fn
:
char fn = "file";
type_fichier(&fn);
您可能需要:
const char *fn = "file";
type_fichier(fn);
您正在使用char
变量来存储字符串字面值,而不是字符数组或等效的字符数组。
int main(int argc, char *argv[]) {
char fn[] = "file";
type_fichier(fn);
}
就这样....