Modifier un caractere dans une chaine [Résolu]

Signaler
Messages postés
16
Date d'inscription
dimanche 10 octobre 2004
Statut
Membre
Dernière intervention
11 avril 2006
-
Messages postés
16
Date d'inscription
dimanche 10 octobre 2004
Statut
Membre
Dernière intervention
11 avril 2006
-
Bonjours à tous

Le titre est assez explicite...

Je voudrais pouvoir changer un caractere d une chaine si c'est un a mais ca ne marche pas.

Merci pour votre aide

mon code :



int main()

{

char* fic;

int i,a;

printf("Entre une chaine");

gets(fic);

a=strlen(fic);

for(i=0; i<a; i++);

{

if(fic[i]=="a") fic[i]="b";



}

printf("%s",fic);

getch();

return 0;

}


Floche

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
"a" est adresse de chaine, sera donc jamais égal, il faut 'a'.


*fic POINTE OU ??? donne un buffer.

char fic[300];
....
.../
char *c = fic;
while(*c) { if(*c 'a') *c 'b';
c++;
}

ciao...
BruNews, MVP VC++
Messages postés
3
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
2 septembre 2005

salut ,
vous pouvez travailler avec les pointeurs, ça vous aidra de trouver ta chaine finale,
voici la modification que j ai fait sur votre prog.

int main()
{
char * fic, *pnt ; // j ai ajouter un pointeur "pnt"
printf("entrer une chaine");
gets(fic);
pnt = fic; //pnt porte la même adresse de votre chaine while(pnt!(strlen(fic)+fic+1) //tester si pnt à l' adresse de derniere caractere
{ if(*pnt 'a') *pnt 'b';
pnt++;
}
printf("%s", fic);
getch();
return 0;
}
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
while(pnt!= (strlen(fic)+fic+1)
l'adresse de fin (le termainateur NULL) est à: fic + strlen(fic), SANS le + 1.
Ne pas mettre strlen() en boucle, sera recalculé à chaque tour. Avec pointeur, aucun besoin du tout, voir plus haut.
gets(fic); // fic oublie toujours de pointer sur un buffer.

ciao...
BruNews, MVP VC++
Messages postés
16
Date d'inscription
dimanche 10 octobre 2004
Statut
Membre
Dernière intervention
11 avril 2006

Merci BruNews, ca marche !

Donc le code modifié est ( pour indications) :



int main()

{

char fic[300];

printf("Entre une chaine");

gets(fic);

char *c = fic;

while(*c)

{

if(*c 'a') *c 'b';

c++;

}

printf("%s",fic);

getch();

return 0;

}



[auteurdetail.aspx?ID=39449 ]Merci encore
Floche