Travail avec des chaines de caractères

felisk Messages postés 5 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 29 avril 2004 - 29 avril 2004 à 15:32
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 29 avril 2004 à 20:54
char a[]="abcdefg abcdefg";
char b[]="123456789"
char c[30];

sscanf(a, "%10c", c);	/*je veux copier 10 caractères de a vers c pour obtenir b="abcdefg ab"*/

strcpy(c,"");	/*je fais un reset de b (b="")*/

sscanf(b, "%3c", c);	/*je veux copier 3 caractères de a vers b afin d'obtenir b="123"*/


Lors du 1er "sscanf" tout marche bien, puis je vérifie après le "strcpy" que b="", et là se pose mon problème, car au 2ème "sscanf" les 3 caractères demandés ont bien été copié mais je retrouve un vieux reste, ca donne au final c="123defg ab"

Ca se trouve je n'ai pas utilisé les bonnes fonctions, je suis un débutant du C

4 réponses

D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
29 avril 2004 à 15:52
strcpy(c,""); /*je fais un reset de b (b="")*/

tu dis que tu reset b, mais là tu reset c! dapres ce ke je vois en tout cas :s

[DmX]
0
felisk Messages postés 5 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 29 avril 2004
29 avril 2004 à 15:58
char a[]="abcdefg abcdefg";
char b[]="123456789"
char c[30];

sscanf(a, "%10c", c); /*je veux copier 10 caractères de a vers c pour obtenir b="abcdefg ab"*/

strcpy(c,""); /*je fais un reset de c (c="")*/

sscanf(b, "%3c", c); /*je veux copier 3 caractères de a vers c afin d'obtenir c="123"*/


Je me suis planté dans la copie du code, c'est bien c="" que je veux faire, mon problème est toujours le meme
0
petitchech Messages postés 114 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 28 juin 2004
29 avril 2004 à 17:41
salut je sai pas si c'est sa que tu veu faire

deja pour metre a zero une variable char utilise la fonction memset(c,0,sizeof(c));

elle metra dans toute les case de la variable le caractere null.

apre pour copier 10 lettre vers la variable b tu peu faire

strncpy(b,a,10);
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
29 avril 2004 à 20:54
eu... pour reset ta chaine c le plus simple c'est de faire

*c=0; non? on s'en fou des autres zero
0
Rejoignez-nous