Bonjour ,
je souhaiterais pour voir supprimer les N premier caractere d'une chaine
quelq'un aurait il la solution ?
merci bcp
Bonjour ,
je souhaiterais pour voir supprimer les N premier caractere d'une chaine
quelq'un aurait il la solution ?
merci bcp
Tu peux effectuer une copie de ta chaine à partir de l'emplacement pChaine+N vers ta nouvelle chaine.
cf. strcpy() et strncpy()
Bonjour,
oui plein, tout depend de ce que tu veux faire de ta premiere chaine, et de la deuxieme.
et pis encore plein d autre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 char* nvelle_chaine = *( ancienne_chaine + nb_car ); /* ou */ char* nvelle_chaine = malloc( /* de la taille qui va bien */ ) strncpy( nvelle_chaine, ( ancienne_chaine + nb_car ), nb_car );
- Si il veut supprimer les N premiers caractères de la chaîne, la chaîne source et la chaîne destination se recouvrent et le comportement de strcpy, strncpy et memcpy est indéfini. Par contre, on peut utiliser memmove.
- Il n'est absolument pas nécessaire d'allouer une chaîne intermédiaire, même si on décide de programmer soi-même explicitement le déplacement : celui-ci peut se faire sur place sans problèmes.
Mais par exemple,si j'ai une chaine : " Destination : Paris;"
et dans cette chaine je veux recupererr uniquement paris.
J'ai utiliser la fonction strchr de maniere à pouvoir chercher le caractere ':'.
puis je fais une boucle while jusqu'a trouver le caractere ';', et dans cette boucle je copie caractere par caractere la chaine mais lors de l'execution au moment de la copie, un message d'erreur apparait.
Voici mon code :
je declare mes chaines source et de cette maniere:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 info_pert_temp = strchr(buf,':'); /*On recherche dans la chaine le caractere ':'*/ while(info_pert_temp[j]!= ';') { info_pert_temp[j] = info_pert[j-2]; /*C'est ici que le message d'erreur apparait*/ j++; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *info_pert = {0},*info_pert_temp = {0};
C'est pour cela que je disais une copie de sa chaîne vers une nouvelle chaîne.Envoyé par diogene
Oui, c'est juste, j'y pensais plus...Envoyé par diogene
Tu pourrais jeter un coup d'oeil sur la fonction strtok() qui t'effectue cela.Envoyé par kobalt02
Un pointeur sur chaîne de caractère s'initialise ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *info_pert = {0},*info_pert_temp = {0};
Puis il te faut allour l'emplacement mémoire à l'aide d'une fonction d'allocation alloc(), calloc() et la libérer une fois tes manipulations terminées avec free().
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *info_pert = NULL;
Sinon tu peux aussi travailler avec une zone mémoire déclarée statiquement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 info_pert = malloc(100); if(info_pert == NULL) { // Erreur } // Traitements.... // Libération mémoire free(info_pert); info_pert = NULL;
Code : Sélectionner tout - Visualiser dans une fenêtre à part char info_pert[100] = {0};
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager