Bonjour
printf("1tab1=%s\n",(char *)&tab1);
Dans mon tab1 j'ai une chaine de valeur indeterminé qui peut contenir des valeur "14,12,4"
J'aimerai separer cette chaine en 3 nombres int
Quelqu'un à une idée de comment faire ?
Merci
Lionceau,
Bonjour
printf("1tab1=%s\n",(char *)&tab1);
Dans mon tab1 j'ai une chaine de valeur indeterminé qui peut contenir des valeur "14,12,4"
J'aimerai separer cette chaine en 3 nombres int
Quelqu'un à une idée de comment faire ?
Merci
Lionceau,
Bonjour, as tu deja fais un code?
Je me demande s'il ne faut pas utiliser une fonction atoi.
voici le code actuelement :
en bref c 'est pour decomposer la chaine afin de faire des push , pour une liste chainé
Il faut utiliser une fonction atoi , mais avant il faut reussir a a avoir 3 chaine de caractere c 'est la ou je bug
mais j'ai pas reussi.. alors svp merci si tu peux me conseiller/aider
Voila le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 //(char *)&tab1; Est sous la forme 1,12,6,88 //On va donc devoir faire : //f_Id_Push(&(p1.liste_identifiant), 1); //f_Id_Push(&(p1.liste_identifiant), 12); //f_Id_Push(&(p1.liste_identifiant), 6); //f_Id_Push(&(p1.liste_identifiant), 88); //printf("1tab1=%c\n",tab1[2]); //printf("1tab1=%s\n",(char *)&tab1); printf("1tab1=%s\n",(char *)&tab1); printf(" n=%d \n",n); //n++; printf(" nDepart=%d \n",nDepart); //printf("\n n=%d \n",n); for(i=nDepart;i<n;i++) { printf(" boucle nDepart=%d \n",nDepart); printf(" boucle i=%d \n",i); printf("2tab1[i]=%c\n",tab1[i]); j=(atoi((char *)&tab1[i])+j); if(tab1[i]==',') { //*chaine=tab1[nDepart]; printf("j=%d\n",j); //n est la valeur de l position de la virgule donc le mot cherché est entre nDepart et (n-1)-nDepart /*for(j=nDepart;j<((n-1)-nDepart);j++) { printf("j=%d\n",j); //(char *)chaine=strcat((char *)tab1[j],(char *)chaine); printf("%s\n",chaine); }*/ //longueur=n-nDepart; //strncpy(chaine,nDepart,longueur); //-------achanger-------nDepart=n+1; } }
Ps : Excuse moi pour l'indentation , ca l'affiche mal
Lionceau,
emprex merci pour ta réponse, j'ai trouver la solution.
Voila le code : (si ca peux aider quelqu'un)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 //(char *)&tab1; Est sous la forme 1,12,6,88 //On va donc devoir faire : //f_Id_Push(&(p1.liste_identifiant), 1); //f_Id_Push(&(p1.liste_identifiant), 12); //f_Id_Push(&(p1.liste_identifiant), 6); //f_Id_Push(&(p1.liste_identifiant), 88); printf("tabeau interne=%s\n",(char *)&tab1); // ici, on va boucler dans le tab1. On copie dans tab2 int p_debut=0; int n1=0; // pointeur sur tab1 int n2; // pointeur sur tab2 int val; // la valeur qui sera convertie // Init du tab2 n2=0; tab2[0]=0; while(1) // ici, on va boucler infini { //printf ("AAAA0 n1=(%d) tab1=(%s)\n",n1,(char *)&tab1); while(tab1[n1]) // ici la boucle s'arrete à la fin de la chaine qui fini obligatoirement par un 0 { //printf ("AAAA1 n1=(%d) n2=(%d)\n",n1,n2); if (tab1[n1] == ',') { n1++; // passe au suivant pour tab1 break; // arrete si séparateur } tab2[n2]=tab1[n1]; n1++; n2++; } tab2[n2]=0; // fin de la chaine tab2 val=atoi((char *)&tab2); // conversion de la chaine vers int printf(" --> contenu = (%d)\n",val); if (!(tab1[n1])) break; // Si on est en fin de chaine, arrete // Init du tab2 n2=0; tab2[0]=0; }
Lionceau,
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager