我試圖找出使用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