入力としてファイル名 (main.c など) を受け取り、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* を指定して format() を呼び出すだけです。
int main(int argc, char *argv[])
{
char *filename = "test.c";
format(filename);
return 0;
}
このプログラムを実行するとバス エラーが発生する理由がわかりません。あなたが提供できる助けを前もって感謝します。
編集:メイン関数コードを追加