HELP envoi chaine dans structure par fnction
Fermé
saliman
-
22 nov. 2007 à 02:28
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 23 nov. 2007 à 08:24
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 23 nov. 2007 à 08:24
A voir également:
- HELP envoi chaine dans structure par fnction
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Nouvelle chaîne tnt gratuite 2024 - Guide
- Chaine x iptv - Forum TV & Vidéo
- Envoyer sms par internet - Guide
3 réponses
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
22 nov. 2007 à 09:47
22 nov. 2007 à 09:47
houlà ! J'ai l'impression que tu as du mal avec la notion de pointeur et de tableau.
je suis même un peu étonner que la première igne du main fonctionne.
essai :
Je sais pas si çarésoudra ton problème, mais ça sera plus propre.
je suis même un peu étonner que la première igne du main fonctionne.
essai :
char num[sizeof("1860469T45")]; strcpy(num,"1860469T45");
Je sais pas si çarésoudra ton problème, mais ça sera plus propre.
oui c pas faux jai un peu de mal, mais jessai de comprendre :)
merci pour ton aide je vais essayer et je te tien o courant si ca marche ou pas
merci pour ton aide je vais essayer et je te tien o courant si ca marche ou pas
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
23 nov. 2007 à 08:24
23 nov. 2007 à 08:24
Mamiemando avait fait un jolie message sur les pointeurs/tableau, mais le temps de le retrouver...
Je te fait un petit rappel alors.
Pointeur et tableau,c 'est EXACTEMENT la même chose !
l'intéret de la notation en crochet [ ] est de ne pas avoir à faire l'allocation mémoire soit meme.
donc, faire : double* a;a=new double[5];
ou : double b[5];
aura le même résultat, a et b seront deux tableaux de doubles ET deux pointeur.
Maintenant, là où est la confusion, c'est lorsque tu veux recopier un tableau dans une autre variable. Vers a=b; donnera apparemment un résultat satisfesant dans un premier temps, mais n'est pas exactement ce que tu voulais faire.
En effet, quand tu fait a=b, affecte la valeur du pointeur b à a. a devient alors une espèce d'alias de b. si tu modifie a[2] tu modifie identiquement b[2] et inversement.
Et ce qui est valable pour les double l'est aussi pour les int ou les char !
Une chaine de caractère entre guillements, par exemple "chaine", est de type 'const char*' (ou const char[]) et faire char *num="chaine"; fait pointé num vers le const char*.
Dans le cas des char, il existe des fonctions C standard de copie et de comparaison: strcpy() strcmp()
Dernière remarque qui pourrai t'être utiile, c'est la façon d'accéder aux éléments d'un tableau. Pour accéder à une valeur d'un pointeur, on peut faire : *a ou a[0], ce qui est équivalent.
Ceci peut être élargie, *(a+i) est équivalent à a[i].
Tout ça pour te dire que tableau et pointeur c'est pareil. Et qu'il faut faire attention que lorsque tu met une équalité entre deux pointeurs, il faut être sur de ce que tu fait, que tu ne cherche pas à recopier un tableau dans l'autre.
Dernière remarque, fait attention à l'allocation mémoire et au dépassement de tableau qui peuvent créer des erreurs et conduire au plantage du prog
Je te fait un petit rappel alors.
Pointeur et tableau,c 'est EXACTEMENT la même chose !
l'intéret de la notation en crochet [ ] est de ne pas avoir à faire l'allocation mémoire soit meme.
donc, faire : double* a;a=new double[5];
ou : double b[5];
aura le même résultat, a et b seront deux tableaux de doubles ET deux pointeur.
Maintenant, là où est la confusion, c'est lorsque tu veux recopier un tableau dans une autre variable. Vers a=b; donnera apparemment un résultat satisfesant dans un premier temps, mais n'est pas exactement ce que tu voulais faire.
En effet, quand tu fait a=b, affecte la valeur du pointeur b à a. a devient alors une espèce d'alias de b. si tu modifie a[2] tu modifie identiquement b[2] et inversement.
Et ce qui est valable pour les double l'est aussi pour les int ou les char !
Une chaine de caractère entre guillements, par exemple "chaine", est de type 'const char*' (ou const char[]) et faire char *num="chaine"; fait pointé num vers le const char*.
Dans le cas des char, il existe des fonctions C standard de copie et de comparaison: strcpy() strcmp()
Dernière remarque qui pourrai t'être utiile, c'est la façon d'accéder aux éléments d'un tableau. Pour accéder à une valeur d'un pointeur, on peut faire : *a ou a[0], ce qui est équivalent.
Ceci peut être élargie, *(a+i) est équivalent à a[i].
Tout ça pour te dire que tableau et pointeur c'est pareil. Et qu'il faut faire attention que lorsque tu met une équalité entre deux pointeurs, il faut être sur de ce que tu fait, que tu ne cherche pas à recopier un tableau dans l'autre.
Dernière remarque, fait attention à l'allocation mémoire et au dépassement de tableau qui peuvent créer des erreurs et conduire au plantage du prog