1
我正在嘗試編寫一系列函數,將文件名稱作爲輸入(例如main.c)並使用strsep()返回文件擴展名。當我運行程序時,只要調用strsep函數就會出現總線錯誤。下面是代碼:總線錯誤使用strsep()
static char *get_extn(char **filename)
{
char *delim = ".";
strsep(filename, delim);
return *filename;
}
void format(char *filename)
{
char *extn = malloc(256 * sizeof(char));
strncpy(extn, get_extn(&filename), 256);
printf("extn: %s\n", extn);
}
該方案的主要功能簡單地調用格式()與包含文件名的一個char *:
int main(int argc, char *argv[])
{
char *filename = "test.c";
format(filename);
return 0;
}
我不確定爲什麼在執行時該程序使總線錯誤。提前感謝您提供的任何幫助。
編輯:加入主要功能碼
'這個程序的主要功能只是用一個包含文件名的char *調用format()。':我們不關心;我們需要代碼。順便說一下,'strsep()'是壞的和危險的巫術。你應該使用'strtok()'來代替。 – 3442
如果filename是一個字符串文字,那麼你可能無法寫入它。這可能是總線錯誤的原因。 – PSkocik
@KemyLand添加'main()'代碼 –