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);
}
このプログラムの主な機能は、単に()ファイル名を含む文字の*でフォーマットを呼び出します:ここでは、コードです
int main(int argc, char *argv[])
{
char *filename = "test.c";
format(filename);
return 0;
}
実行時に、このプログラムは、バスエラーが発生する理由を、私はわかりませんよ。あなたが提供できるあらゆる助けをありがとうございます。
編集:文字列リテラルの追加メイン機能コード
'このプログラムの主な機能は、ファイル名を含むchar *でformat()を呼び出すだけです。' '私たちは気にしません。コードが必要です。ところで、 'strsep()'は悪くて危険なブードーです。代わりに 'strtok()'を使うべきです。 – 3442
filenameが文字列リテラルの場合、おそらくそれに書き込むことはできません。それはおそらくバスエラーの原因です。 – PSkocik
@KemyLandは 'main()'コードを追加しました –