Tableaux et pointeurs
Résolu
Nabla's
Messages postés
18203
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Nabla's Messages postés 18203 Date d'inscription Statut Contributeur Dernière intervention -
Nabla's Messages postés 18203 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un petit probleme de programmation avec des pointeurs... Je pensais maitriser la question, mais la il y a vraiment quelque chose que je ne comprend pas, et je pense que ca vient du compilateur. Habituellement je travaille sous visual C++ 6, mais la je fais un projet embarqué, su processeur ATMEL, et j'utilise eclipse et gcc pour compiler .... le systeme utilise freeRTOS et lwip(pile TCP/IP)
voila.. a un moment dans mon code, j'ai une structure HTTP
struct HTTP
{
char Version[4];
char Status[4];
char Session[30];
unsigned int Length;
};
j ai un pointeur HTTP* me; qui pointe sur une structure tout bien remplie ...
et j 'essaye d accéder a la 4eme case de Status...
pour cela, me semble t il, et la est la question, je connais 2 méthodes...; la méthode classique:
me->Status[3]='\0';
et la methode "frimeur", avec les pointeurs
me->Status+3+'\0';
pouvez vous me confirmer que ces 2 méthodes sont équivalentes?? et si non, pouvez vous me dire quelle set la différence?
pour moi, ces méthodes sont équivalentes, mais malheureusement, dans mon code, si je tape
me->Status[3]=\0'
if (me->Status+3=='\0')
printf("bingo");
else
printf("dans l'os");
et ben je l'ai toujours dans l'os.. pour etre poli ....
merci d 'avance pour vous pencher sur la question ... je précise que jusque la, je pensait être un plutôt bon programmeur... :'(
J'ai un petit probleme de programmation avec des pointeurs... Je pensais maitriser la question, mais la il y a vraiment quelque chose que je ne comprend pas, et je pense que ca vient du compilateur. Habituellement je travaille sous visual C++ 6, mais la je fais un projet embarqué, su processeur ATMEL, et j'utilise eclipse et gcc pour compiler .... le systeme utilise freeRTOS et lwip(pile TCP/IP)
voila.. a un moment dans mon code, j'ai une structure HTTP
struct HTTP
{
char Version[4];
char Status[4];
char Session[30];
unsigned int Length;
};
j ai un pointeur HTTP* me; qui pointe sur une structure tout bien remplie ...
et j 'essaye d accéder a la 4eme case de Status...
pour cela, me semble t il, et la est la question, je connais 2 méthodes...; la méthode classique:
me->Status[3]='\0';
et la methode "frimeur", avec les pointeurs
me->Status+3+'\0';
pouvez vous me confirmer que ces 2 méthodes sont équivalentes?? et si non, pouvez vous me dire quelle set la différence?
pour moi, ces méthodes sont équivalentes, mais malheureusement, dans mon code, si je tape
me->Status[3]=\0'
if (me->Status+3=='\0')
printf("bingo");
else
printf("dans l'os");
et ben je l'ai toujours dans l'os.. pour etre poli ....
merci d 'avance pour vous pencher sur la question ... je précise que jusque la, je pensait être un plutôt bon programmeur... :'(
A voir également:
- Tableaux et pointeurs
- Tableaux croisés dynamiques - Guide
- Fusionner deux tableaux excel - Guide
- Les tableaux word - Guide
- Fusionner deux tableaux word ✓ - Forum Word
- Citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). ✓ - Forum LibreOffice / OpenOffice
3 réponses
au fait, une erreur c'est glissée dans a description du probleme...
pour la methode avec les pointeurs, il faut lire
me->Status+3='\0';
pour la methode avec les pointeurs, il faut lire
me->Status+3='\0';
le methode pointeur c'est plutot ça il me semble
me->*(Status+3)
merci de ta reponse...
je vienxs de tester ca sous visual studio 6:
#include <iostream.h>
#include <string.h>
struct http
{
char buf[10];
};
void main()
{
http* me=new http;
strcpy (me->buf,"pointeurs");
cout<<me->*(buf+3)<<endl;
}
je pense que ca correspondait a ce que tu disait, il me dit
buf' : undeclared identifier
'->*' : illegal, right operand has type 'int'
par contre, si je fais
cout<<(me->buf)+3<<endl;
ou en core
cout<<me->buf+3<<endl;
il m'affiche bien "nteurs"
je vienxs de tester ca sous visual studio 6:
#include <iostream.h>
#include <string.h>
struct http
{
char buf[10];
};
void main()
{
http* me=new http;
strcpy (me->buf,"pointeurs");
cout<<me->*(buf+3)<<endl;
}
je pense que ca correspondait a ce que tu disait, il me dit
buf' : undeclared identifier
'->*' : illegal, right operand has type 'int'
par contre, si je fais
cout<<(me->buf)+3<<endl;
ou en core
cout<<me->buf+3<<endl;
il m'affiche bien "nteurs"
me->Status est considéré comme une variable...