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

Guidelor Messages postés 236 Date d'inscription jeudi 31 octobre 2002 Statut Membre Dernière intervention 18 août 2006 - 2 juil. 2004 à 14:28
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 2 juil. 2004 à 19:58
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

maevasa Messages postés 100 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 3 août 2004
2 juil. 2004 à 14:44
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];
}
0
theneoiceman Messages postés 78 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 23 avril 2010
2 juil. 2004 à 15:11
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
0
Battousai Messages postés 20 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 19 avril 2006
2 juil. 2004 à 15:18
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
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
2 juil. 2004 à 15:22
Salut,
plus simple:

int nombre (char * chaine)
{
return atoi(chaine+1);
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
2 juil. 2004 à 16:38
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]);
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
2 juil. 2004 à 18:44
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
0
Guidelor Messages postés 236 Date d'inscription jeudi 31 octobre 2002 Statut Membre Dernière intervention 18 août 2006
2 juil. 2004 à 19:30
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 ::
0
Guidelor Messages postés 236 Date d'inscription jeudi 31 octobre 2002 Statut Membre Dernière intervention 18 août 2006
2 juil. 2004 à 19:32
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 ::
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
2 juil. 2004 à 19:58
aardman> Effectivement, je me suis un peu emballé, cependant lachaine+1 représente le 2ème et non le 1er élément du tableau.
0
Rejoignez-nous