Enlever le 1er carctère d'une chaine...

Signaler
Messages postés
236
Date d'inscription
jeudi 31 octobre 2002
Statut
Membre
Dernière intervention
18 août 2006
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
BONJOUR A TOUS !

j'ai fait un prog avec Dev-C++ où un moment l'utilisateur tape une chaine type a7 ou g13
la premiere lettre correspond à son initiale et les chiffres suivants sont utilisées dans des operations mathématiques

Comment donc supprimer la premiere lettre pour obtenir juste le chiffre suivant ?

D'avance merci pour vos réponses , si possible le plus précises possibles, paske j'suis pas un pro :-p

:: Guidelor ::

9 réponses

Messages postés
100
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
3 août 2004

moi je ferais comme ça mais je suis pas pro non plus donc je te garantie pas la soluc:

char a7[12];
char 7[11];

for(i=0;i<12;i++)
{
7[i]=a7[i+1];
}
Messages postés
78
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
23 avril 2010

une autre methode est d'utiliser la fonction strcpy de la maniere suivante :

char lachaine[4]="g13"; // pour l'exemple
char leresultat[3];
strcpy(leresultat,lachaine+1);

Voila voila

Mess with the best, die like the rest
Messages postés
20
Date d'inscription
lundi 12 avril 2004
Statut
Membre
Dernière intervention
19 avril 2006

c'est un bonne solution en effet , sauf que les identificateurs ne doivent pas commencer par des chiffre (char 7[11])!

en tout cas tu peut utiliser aussi cette fonction :

int nombre (char * chaine)
{
char *nombre;

chaine++;
while (*chaine!='\0') //tant c'est pas la fin de la chaine
{
*nombre=*chaine;
nombre++;
chaine++;
}

return atoi(nombre);
}

tu donne la chaine a la fonction et elle te retourne le nombre
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
plus simple:

int nombre (char * chaine)
{
return atoi(chaine+1);
}
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
c'est la solution d'aardman qu'il faut choisir

maevasa>7 n'est pas un nom de variable convenable

theneoiceman>ta solution ne marchera pas

char lachaine[4]="g13"; // pour l'exemple
char leresultat[3];
strcpy(leresultat,lachaine+1);

lachaine est un tableau, donc tu ne peux pas lui ajouter 1. Il faudrait écrire à la place

strcpy(leresultat, &lachaine[1]);
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
A propos du dernier point souligné par Vecchio:
je vois pas le probleme avec lachaine+1 et &lachaine[1] car ils representent exactement la meme chose (adresse du 1er element du tableau).

Par contre, tu dis que c'est un tableau et qu'on ne peut pas lui ajouter 1, et ca c'est vrai:
lachaine++; // invalide
Messages postés
236
Date d'inscription
jeudi 31 octobre 2002
Statut
Membre
Dernière intervention
18 août 2006

Merci pour vos diverses reponses
pour ma part celle de theneoiceman marche bien et pas celle de aardman, mais je dois sans doute mal l'utiliser

mais en fait j'ai un autre prob en amont qui est apparu
quel est le code que je dois mettre pour obtenir une chaine genre "a15" ou "g2" ou "a" tout court pour ensuite la traiter ?

parcequ'avec tous les *, les char, les string, les &, les %i , les %s, eh ben je m'y perd un peu moi...

d'avance merci pour votre patience !

:: Guidelor ::
Messages postés
236
Date d'inscription
jeudi 31 octobre 2002
Statut
Membre
Dernière intervention
18 août 2006

Quand je dis obtenir une chaine, je ve dire faire un input, de sorte que l'utilisateur tape ladite chaine

je m'embrouille , je sais !

:: Guidelor ::
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
aardman> Effectivement, je me suis un peu emballé, cependant lachaine+1 représente le 2ème et non le 1er élément du tableau.