Si tu envoies le nom avec Dsend/Drecv, tu auras la taille. Tu peux alors le copier dans un nouveau buffer ou agrandir le buffer existant avec realloc...
... ou tu peux tout simplement le transmettre avec son caractère nul.
Si tu envoies le nom avec Dsend/Drecv, tu auras la taille. Tu peux alors le copier dans un nouveau buffer ou agrandir le buffer existant avec realloc...
... ou tu peux tout simplement le transmettre avec son caractère nul.
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.
const modifie le type à sa gauche. sauf s'il n'y en a pas du tout, auquel cas, il modifie le premier à sa droite.
avec const char *p ou char const *p, le char est constant, et l'étoile pointe dessus.
un pointeur constant vers un char s'écrit char *const pUn pointeur constant vers un char constant s'écrit ainsi char const * const pLe commentaire dit doxygen est une manière de remplir un commentaire normal (/* */) de façon à ce que l'outil nommé doxygen puisse générer une documentation (généralement au format web).
Il comprend deux particularités:
- il commence par /** et chaque ligne commence par une *
- il y a certaines balises pour donner des informations supplémentaires: @param, @return, @throws...
Quant à ta question, tes données contiennent des '\0'. (Parce que tu ne peux pas savoir qu'elles n'en contiennent jamais)
Donc tu ne peux faire appel à aucune fonction de chaines de caractères.
Tu ne peux utiliser que le mode pointeur+taille.
Il n'y a aucune valeur particulière que tes données ne peuvent pas contenir, tu n'auras donc pas de valeur balise possible, que ce soit \0 ou une autre.
Mes principes de bases du codeur qui veut pouvoir dormir:Pour faire des graphes, essayez yEd.
- Une variable de moins est une source d'erreur en moins.
- Un pointeur de moins est une montagne d'erreurs en moins.
- Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
- jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
- La plus sotte des questions est celle qu'on ne pose pas.
le ter nel est le titre porté par un de mes personnages de jeu de rôle
@leternel merci pour ton explication de const et doxygen (que je n'arrive pas à faire fonctionner avec codeblock enfin c'est un autre problème)
@médinoc effectivement aussi envoyer le \0 est la manière la plus simple de transmettre le nom
du coup je vous remercie tous les deux et tous ceux qui m'ont aidé et je pense loc le sujet vu que mon client et mon serveur fonctionnent sous linux (reste plus qu'à tester sous windows).
P.S médinoc les structures fstat et _fstat sont identiques
et pour la fonction de concaténation dynamique j'ai essayé d'utiliser celle de sambia39 mais à chaque fois que je l'utilise ma taille indiquée par size+1 est inférieure à save_t pourtant je lui passais comme taille strlen(dossier)+strlen(nom)+1 (nom et dossier sont bien des chaines)
pour la fonction de sambia et la tienne @médinoc j'ai trouvé l'erreur il se trouvais que j'essayais de faire ca
du coup il n'acceptais pas je pense que c'est due a la chaine "/home/test/" qui doit être en const car déclarée lors de la compilation
Code : Sélectionner tout - Visualiser dans une fenêtre à part concat("/home/test/",nomFichier)
Il me semble carrément que la version qu'on avait postée prenait son char* par pointeur, pour éviter une partie de ce genre de choses (et parce qu'elle ré-allouait le pointeur pour accommoder la longueur supplémentaire).
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.
effectivement ta fonction et celle de sambia prennent des char * mais accepte qu'on leur passe une chaine constante comme ca
en fait il se trouve que j'utilisais comme ça ta fonction (en simplifier)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int main{ fct("/home/test/"); } void fct(char * dossier) { char *nomFichier=quelquechose; concat(dossier,nomFichier); }
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