Bonjour,
Est-il possible de faire ça :
Si non, pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 char string[10]; char stringb[10]; char *a=&b[8]; char *b=string; strncpy(stringb, string, a-b);
T.
Bonjour,
Est-il possible de faire ça :
Si non, pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 char string[10]; char stringb[10]; char *a=&b[8]; char *b=string; strncpy(stringb, string, a-b);
T.
C'est possible en inversant les définitions de a et b.
Houlà, j'ai fait une petit erreur ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 char string[10]; char stringb[10]; char *a=&string[8]; char *b=string; strncpy(stringb, string, a-b);
Ça c'est bon. Mais attention, strncpy est piègeux pour les perfs, il écrit toujours a-b caractères, complètant avec des '\0' si besoin est.Envoyé par Tchetch
Mais mon problème est le suivant, si une implémentation définit un char comme étant 16 bits ... Est-ce que cela ne peut pas poser problème.
Je sais pas, mais il y a quelque chose qui me dérange là dedans ...
Non, la différence entre deux pointeurs d'un type est en nombre d'objets de ce type.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Non.Envoyé par Tchetch
b est utilisé avant d'être défini.Si non, pourquoi ?
de plus, pour être valide, une soustraction de pointeur doit concerner des pointeurs sur le même objet. C'est bien la cas ici, mais c'est pas facile à voir...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 char string[10]; char stringb[10]; char *b=string; char *a=b+8; strncpy(stringb, string, a-b);
Partager