Я пишу программу, которая выдает результаты, аналогичные команде ls -l. В настоящее время я могу получать результаты с помощью циклов, но теперь я хочу сохранить определенные переменные в связанном списке, чтобы позже я мог поместить его через лексико-графический сортировщик. Я могу правильно хранить большую часть переменной в узле, но проблемы возникают из-за того, что я пытаюсь сохранить переменную разрешения. Есть ли способ, которым я могу получить содержимое char [] на char *?
При настройке этого параметра разрешения сохраняются в char [], но я не нашелиспользовать char [] в качестве возвращаемого типа, поэтому я решил, что char * будет более подходящим, но сейчас я пытаюсь выяснить, как перейти от char [] к char *.
char* find_perms(mode_t st) {
char* perms_ptr;
char perms[11];
if(st && S_ISREG(st)) perms[0]='-';
else if(st && S_ISDIR(st)) perms[0]='d';
else if(st && S_ISFIFO(st)) perms[0]='|';
else if(st && S_ISSOCK(st)) perms[0]='s';
else if(st && S_ISCHR(st)) perms[0]='c';
else if(st && S_ISBLK(st)) perms[0]='b';
else perms[0]='l'; // S_ISLNK
perms[1] = (st && S_IRUSR) ? 'r':'-';
perms[2] = (st && S_IWUSR) ? 'w':'-';
perms[3] = (st && S_IXUSR) ? 'x':'-';
perms[4] = (st && S_IRGRP) ? 'r':'-';
perms[5] = (st && S_IWGRP) ? 'w':'-';
perms[6] = (st && S_IXGRP) ? 'x':'-';
perms[7] = (st && S_IROTH) ? 'r':'-';
perms[8] = (st && S_IWOTH) ? 'w':'-';
perms[9] = (st && S_IXOTH) ? 'x':'-';
perms[10] = '\0';
printf("%s ",perms);
perms_ptr = perms;
return perms_ptr;
}
как сейчас, он возвращает char *, но вместо указания массива, который я надеялся использовать позже, он указывает на пустую строку. Когда я использовал gdb, чтобы посмотреть, на что указывает perms_ptr, он просто показывался как "".