Je tente d'écrire une série de fonctions qui prendront un nom de fichier en entrée (par exemple, main.c) et renverront l'extension de fichier en utilisant strsep(). Quand j'exécute le programme, j'obtiens une erreur de bus chaque fois que la fonction strsep est appelée. Voici le code:Erreur de bus à l'aide de 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);
}
La fonction principale de ce programme le format appelle simplement() avec un char * contenant un nom de fichier:
int main(int argc, char *argv[])
{
char *filename = "test.c";
format(filename);
return 0;
}
Je ne suis pas sûr pourquoi ce programme provoque une erreur de bus lors de l'exécution . Merci d'avance pour toute aide que vous pouvez fournir.
Edit: principal code de fonction ajoutée
'La fonction principale de ce programme appelle simplement format() avec un caractère * contenant un nom de fichier.' ': Nous nous en fichons; nous avons besoin du code. BTW, 'strsep()' est mauvais et dangereux vaudou. Vous devriez utiliser 'strtok()' à la place. – 3442
Si filename est un littéral de chaîne, vous ne pourrez probablement pas y écrire. C'est probablement la cause de l'erreur de bus. – PSkocik
@KemyLand a ajouté le code 'main()' –