Dosya adını giriş olarak alacak bir dizi işlev yazmayı deniyorum (ör. Main.c) ve strsep() işlevini kullanarak dosya uzantısını döndür. Programı çalıştırdığımda, strsep işlevi çağrıldığında bir veriyolu hatası alıyorum. çalıştırıldığında bu program bir otobüs hataya neden niçinVeriyolu Hatası strsep() kullanma
int main(int argc, char *argv[])
{
char *filename = "test.c";
format(filename);
return 0;
}
emin oldum:
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);
}
Bu programın ana işlevi basitçe bir dosya adı içeren bir karakter * ile biçim() çağırır: İşte kod . Sağladığınız herhangi bir yardım için şimdiden teşekkür ederiz.
Düzenleme: dize hazır hafıza yazılabilir olması garanti edilmez
'Bu programın ana işlevi, bir dosya adı içeren bir char * ile formatı() çağırır. ': Biz umursamıyor; Kodu istiyoruz. Btw, 'strsep()' kötü ve tehlikeli voodoo. Bunun yerine strtok() 'yi kullanmalısınız. – 3442
Dosya adı bir dizgi değişmeziyse, büyük olasılıkla buna yazamazsınız. Muhtemelen otobüs hatasının sebebi. – PSkocik
@KemyLand 'main() kodu eklendi –