bonjour,
j'ai un pointeur qui pointe sur 64 case memoire c_à_d que je stock une chaine de 64 caractéres alors je veut extraire la chaine de caractére et la divise sur 4 vatiable comme suit T1[16],T2[16] ,T3[16] et T4[16] et l'afficher![]()
bonjour,
j'ai un pointeur qui pointe sur 64 case memoire c_à_d que je stock une chaine de 64 caractéres alors je veut extraire la chaine de caractére et la divise sur 4 vatiable comme suit T1[16],T2[16] ,T3[16] et T4[16] et l'afficher![]()
et ? quelle est ta question ?![]()
A priori, comme tu l'as mentionné, il suffit d'affecter à T1 les 16 premiers caractères, à T2 les 16 suivants etc. Je pense que la réponse à ton problème est dans ton propre message...
le probléme est que lorsque je fait le boucle de 0 jusqu'a strlen(mon pointeur) et je fait affichage seulement seulement le premier tableu est juste les autr sont faut
on peut voir ton code ?
for (i=0;i<16;i++)
{
T1[i]=Buffer[i];
T2[i]=Buffer[i+16];
T3[i]=Buffer[i+32];
T4[i]=Buffer[i+44];
}
1)
Que viennent faire ici ces choses (que j'ai mis en rouge) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7for (i=0;i<16;i++) { T1[i]=Buffer[i]; T2[i+16]=Buffer[i+16]; T3[i+32]=Buffer[i+32]; T4[i+44]=Buffer[i+44]; }
(EDIT : Apparemment, t'as édité entre temps.)
* 32 + 16 ne fait pas 44.
2) Tes 4 tableaux doivent chacun avoir une taille de 17. Une chaine de caractères se finit toujours par un '\0'... qu'il faut donc ajouter également.
tu as raison j'ai oublié de mettre la fin du chaine : '\0'
merci bien
Pourquoi cette boucle ? memcpy le fait pour toi !!!
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 memcpy(T1, buffer, 16); memcpy(T2, buffer + 16, 16); memcpy(T3, buffer + 32, 16); memcpy(T4, buffer + 48, 16);
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
j'ai modifier la boucle
for (i=0;i<16;i++)
{
( t1[i]=Buffer[i] , t2[i]=Buffer[16+i] , t3[i]=Buffer[32+i] , t4[i]=Buffer[48+i]);
}
mais il y a toujours l'affichage faux
Tu as encore oublié le '\0' terminal
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 #define DIM 16 char t1[DIM +1]; char t2[DIM +1]; char t3[DIM +1]; char t4[DIM +1]; for (i=0;i< DIM;i++) { t1[i]=Buffer[i] ; t2[i]=Buffer[DIM +i] ; t3[i]=Buffer[2*DIM +i] ; t4[i]=Buffer[3*DIM +i]; } t1[DIM ]= '\0'; t2[DIM ]= '\0'; t3[DIM ]= '\0'; t4[DIM ]= '\0';
Poste le code COMPLET et compilable que tu utilises, sinon on va tourner en rond indéfiniment.
à diogene
j'ai essayer ton code et et apart le petit parantése
t4[i]=Buffer[3*DIM +i]);
la simulation a marché et l'affichage aussi alors monsieur merci bien pour votre aide![]()
Partager