C : comment décaler des chaines
Résolu
jerémiethe7
Messages postés
152
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
J'ai une chaine de caractere et je souhaite enlever tous les caracteres qui ne sont pas des lettre majuscules.
J'ai cherché les codes ACSII des maj et ils sont entre 65 et 90.
mon bout de prg ressmeble à ça :
char[100] caractere;
for(int i=0;i<100;i++)
{
if(caractere[i]<65 || caractere[i]>90) // Si on a pas de majuscules à i
{
caractere[i]=''; // ce sont 2 ' et non 1 ".
}
}
le problème c'est que l ecompilateur n'aime pas ce que je fait dans mon if il dit qu'il manque quelque chose entre les 2 '
Si quelqu'un pouvais m'aider ce serait cool.
merci
J'ai une chaine de caractere et je souhaite enlever tous les caracteres qui ne sont pas des lettre majuscules.
J'ai cherché les codes ACSII des maj et ils sont entre 65 et 90.
mon bout de prg ressmeble à ça :
char[100] caractere;
for(int i=0;i<100;i++)
{
if(caractere[i]<65 || caractere[i]>90) // Si on a pas de majuscules à i
{
caractere[i]=''; // ce sont 2 ' et non 1 ".
}
}
le problème c'est que l ecompilateur n'aime pas ce que je fait dans mon if il dit qu'il manque quelque chose entre les 2 '
Si quelqu'un pouvais m'aider ce serait cool.
merci
9 réponses
Salut,
Essaye :
caractere[i] = '\0' ;
Mais je ne sais pas trop ce que tu veux exactement...
Si tu fais ca, tu auras peut-etre des surprises.... est-ce que tu veux juste eliminer les non-majucules ? Par exemple ceci :
QWERTIxESTxGENTIL ---> QWERTIESTGENTIL
ou est-ce que tu veux cela :
QWERTIxESTxGENTIL ---> QWERTI
Si tu veux le premier cas, il suffit de ne pas incrementer i lorsque ce n'est pas une majuscule...
a+
-Qwerti.
Essaye :
caractere[i] = '\0' ;
Mais je ne sais pas trop ce que tu veux exactement...
Si tu fais ca, tu auras peut-etre des surprises.... est-ce que tu veux juste eliminer les non-majucules ? Par exemple ceci :
QWERTIxESTxGENTIL ---> QWERTIESTGENTIL
ou est-ce que tu veux cela :
QWERTIxESTxGENTIL ---> QWERTI
Si tu veux le premier cas, il suffit de ne pas incrementer i lorsque ce n'est pas une majuscule...
a+
-Qwerti.
j'aimerai obtenir ça par exemple :
GHDBFJDSBpohpg4512g1hùù!:</*-JKUY
devienne
GHDBFJDSBJKUY
voilà mais j'avais déja essayé l'antislashe 0 mais la chiane se termine et donc j'ai plus du tout de caractère.
GHDBFJDSBpohpg4512g1hùù!:</*-JKUY
devienne
GHDBFJDSBJKUY
voilà mais j'avais déja essayé l'antislashe 0 mais la chiane se termine et donc j'ai plus du tout de caractère.
J'ai aussi penser à remplacer le contenu du caractere i par celui de i+1 mais sans résultat positif.
EXACTEMENT !!! tu as tout compris !!!
Donc ce que tu peux essayer c'est un array temporaire
char tmp[100];
Tu ne copies dans tmp QUE les majuscules et a la fin tu mets un beau '\0'. Et apres tu copie tmp dans caractere.
Je pense que tu vas y arriver !
Tiens-nous au courant.
a+
-Qwerti.
Donc ce que tu peux essayer c'est un array temporaire
char tmp[100];
Tu ne copies dans tmp QUE les majuscules et a la fin tu mets un beau '\0'. Et apres tu copie tmp dans caractere.
Je pense que tu vas y arriver !
Tiens-nous au courant.
a+
-Qwerti.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ok merci en faite c'était pas très compliqué mais fallait y penser.
c'est pas tout a fait résolu mais je sait ce qu'il va pas mais sinon merci a toi pour m'avoir aidé Qwerti.
a++++
c'est pas tout a fait résolu mais je sait ce qu'il va pas mais sinon merci a toi pour m'avoir aidé Qwerti.
a++++
Poste-nous la solution quand tu auras fini, ca pourra toujours servir a quelqu'un s'il fait une recherche.
a+
-Qwerti.
a+
-Qwerti.
Salut,
voilà sans une chaîne temporaire
voilà sans une chaîne temporaire
lami20j@debserv:~/trash$ cat ccm.c #include <stdio.h> int main () { char chaine[] = "GHDBFJDSBpohpg4512g1hùù!:</*-JKUY "; int i, j; printf ("%s\n", chaine); for (i = j = 0; chaine[i] != '\0'; ++i) if (chaine[i] >= 65 && chaine[i] <= 90) chaine[j++] = chaine[i]; chaine[j] = '\0'; printf ("%s\n", chaine); return 0; }Compilation et exécution
lami20j@debserv:~/trash$ gcc ccm.c lami20j@debserv:~/trash$ ./a.out GHDBFJDSBpohpg4512g1hùù!:</*-JKUY GHDBFJDSBJKUY