, когда я жестко код chemin
в open(chemin, O_RDONLY)
в имя файла, программа работает, но когда я ухожу, если open(chemin, O_RDONLY)
Я получаю No such file or directory
.C: Нет такого файла или каталога
Почему не chemin
в type_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);
}
ли вы слушать предупреждения вашего компилятора на всех? Что-то о инициализации * делает целое число из указателя без приведения * должно дать вам мощный ключ. – Jens
Ваш код даже не подлежит компиляции с помощью любого педанта C. И это именно то, что вы должны делать с любым компилятором C: запускайте его в наиболее педантичном режиме. – AnT