tôi đang cố gắng để tìm hiểu các loại file sử dụng mã c, đây là mãmiễn phí con trỏ char trong c
char *get_file_type(char *path, char *filename)
{
FILE *fp;
char command[100];
char file_details[100];
char *filetype;
sprintf(command, "file -i %s%s", path, filename);
fp = popen(command, "r");
if (fp == NULL) {
printf("Failed to run command\n");
exit(1);
}
while (fgets(file_details, sizeof(file_details)-1, fp) != NULL) {
filetype = (strtok(strstr(file_details, " "), ";"));
}
pclose(fp);
return filetype;
}
đây thay vì tuyên bố lệnh [], tôi có thể sử dụng * lệnh? Tôi đã cố gắng sử dụng nó, nhưng nó đã ném một ngoại lệ. chúng tôi không cần phải giải phóng các biến được khai báo như lệnh []? nếu có thì sao?
Tôi có thể sử dụng strdup thay thế? –
Bạn có thể, nhưng sau đó bạn phải nhớ gọi 'miễn phí' trong (các) chức năng gọi để tránh rò rỉ bộ nhớ. –