Si ta sous-chaîne apparait au maximum qu'une fois dans une chaîne et si elle ne se situe pas forcément au début, tu peux faire comme ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| char chaine1[256] = "1C FREQUENCE A Aller SANS signature";
char sous_chaine[] = "1C ";
char chaine2[256];
char *pos_sous_chaine;
pos_sous_chaine = strstr(chaine1,sous_chaine);
if (pos_sous_chaine == NULL)
strncpy(chaine2,chaine1,strlen(chaine1)+1);
else
{
strncpy(chaine2,chaine1,pos_sous_chaine-chaine1);
chaine2[pos_sous_chaine-chaine1]=0;
strcat(chaine2,chaine1+(pos_sous_chaine-chaine1)+strlen(sous_chaine));
} |
~~~~
@ Odulo :
Attention aux parenthèses.
str2 = malloc(strlen(str1 - OFFSET));
Ce serait plutôt :
str2 = malloc(strlen(str1) - OFFSET + 1); /* Ne pas oublier +1 pour le \0 final */
Partager