Merci Ngork,
Par contre la fonction renvoi 0 pour la position, elle ne devrait pas.
Le compilateur indique : Warning [2066] type qualifier mismatch in assignment
int pos_start = strspn(string, "\x12");
je pense que strspn fonctionne uniquement avec des chaines et pas des caractères seuls.
Si j'utilise la fonction pour la detection du dernier caractère DC2 avec la boucle for, la fonction retourne la bonne position
Par contre le compilateur n'aime pas l'utilisation de memove : Warning [2054] suspicious pointer conversion
memmove(string, &string[pos_start], strlen(string) + 1 - pos_start);
Cette fonction donne le résultat attendu, mais je voudrai maintenant retourné la chaine string modifiée mais je n'y parviens pas :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| int clean_string(char string[])
{
int i, pos_start;
for (i = 0 ; i != strlen(string) ; i++)
{
if (string[i] != 0x12)
{
pos_start = i;
break; // DC2 character (device control 2)
}
}
for (i = 0 ; i != strlen(string)+1 ; i++)
{
string[i] = string[i+pos_start];
}
return pos_start;
} |
Partager