Envoyé par
sandra771
J'ai essayé la fonction comme suit (je mets juste une partie du code)
1 2 3 4 5
|
printf("toto : %s\n", toto);
char dest[sizeof(toto)/sizeof(toto[0])];
size_t res1 = str_remove_chars(dest, toto, '"');
printf("dest = \"%s\" (%u chars).\n", dest, (unsigned int)res1); |
L'exécution donne:
toto : "valeur"
signal SEGV (no mapping at the fault address) in strchr at 0xfea4e5b0
0xfea4e5b0: strchr+0x0004: ldsb [%o0], %o4
Current function is str_remove_chars
293 if(strchr(chars, c)==NULL)
Ben oui, quand le compilateur fait un warning, il faut vérifier son code. :
size_t res1 = str_remove_chars(dest, toto, "\"");
Rappel :
1 2 3 4 5
| size_t str_remove_chars(
char *dest, //[out] Destination buffer. MUST be at least as long as src.
char const *src, //[in] Source string. Can be equal to dest.
char const *chars //[in] Chars to remove.
) |
Mais des solutions plus simples ont été publiées par la suite...
Partager