我试图找出使用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;
}
在这里,而不是宣布命令[],我可以使用*命令?我试图使用它,但它抛出了一个异常。我们不需要释放像命令[]一样声明的变量?如果是的话如何?
我可以使用strdup吗? – 2010-09-07 09:22:03
你可以,但是你必须记得在调用函数中调用'free'来避免内存泄漏。 – 2010-09-07 09:52:42