Chaînes dynamiques - C++ - Programmation
Marsh Posté le 09-06-2003 à 15:23:54
Code :
|
Marsh Posté le 09-06-2003 à 15:49:37
ok. tu penses quoi de
Code :
|
Marsh Posté le 09-06-2003 à 15:50:08
chrisbk a écrit :
|
festival de C
Marsh Posté le 09-06-2003 à 15:55:15
++Taz a écrit : festival de C |
je me contente de modifié le code existant pour que ca colle avec le reste sans aller chercher plus loin
Marsh Posté le 09-06-2003 à 15:55:17
chrisbk a écrit :
|
Ca ne marche pas non-plus, il y a toujours quatre "ýýýý" à la fin de la chaîne Juste pour voir j'ai aussi essayé :
Code :
|
Et là aussi, il y a les quatres "ýýýý". En fait, c'est pas à la lecture du fichier que ça déconne mais au niveau du "new char" : au lieu de mettre la taille à n, on dirait qu'il la met à n + 4. Ca peut-être dû à quoi ??
Marsh Posté le 09-06-2003 à 15:55:53
++Taz a écrit : ok. tu penses quoi de
|
Je vais essayer..
-- edit: heu non ça ne peut pas marcher non-plus. Je lis un fichier binaire avec des octets et des strings en vrac les uns après les autres (sans 0 pour séparer les chaînes, ni de CR). Donc le getline peut pas marcher si ?
Marsh Posté le 09-06-2003 à 15:55:59
manque le \0 a la fin
Code :
|
la c ok
alloue un caractere de plus a ton souc (buffer)
Marsh Posté le 09-06-2003 à 16:08:46
_Lyghur_ a écrit : |
ah ben ok, faut aussi apprendre à t'exprimer. c'est pas des chaines, c'est une suite de caractères. a ce moment là je vois pas ou est le problème de l'\0 final
le memset c'est bof (C) et ne sert à rien du tout dans ton cas. le cast est pas bon (istream& read (char* s, streamsize n ); ) car C et inutile.
Marsh Posté le 09-06-2003 à 16:09:52
chrisbk a écrit : manque le \0 a la fin |
voir son edit: il travaille enfait avec de octets. je vois pas d'interet de mettre un '\0' à la fin. si tu lis avec un read, t'ecris avec un write.
Marsh Posté le 09-06-2003 à 16:10:39
++Taz a écrit : voir son edit: il travaille enfait avec de octets. je vois pas d'interet de mettre un '\0' à la fin. si tu lis avec un read, t'ecris avec un write. |
ben visiblement j'avais mis dans le mille, et a mon idée il attaque ca au printf/cout par derriere donc bon
Marsh Posté le 09-06-2003 à 16:13:30
moi je comprends pas comment il fait sans \0 et sans \n pour déterminer qu'il a lu une ligne et decider d'afficher.
si ton truc c'est juste une série de mot séparée par des esapces (ou tab), l'exemple
Code :
|
marche parfaitement
Marsh Posté le 09-06-2003 à 16:41:03
Toutes les chaînes sont collées les unes aux autres et j'ai inclu dans le fichier un entête avec la taille de chaque chaîne, sa position dans le fichier, un ID et quelques autres trucs. C'est peut-être pas la meilleure solution mais ça marche bien (depuis peu ) et c'est rapide (pas besoin de lire tout le fichier pour lire une chaîne puisque tu connais sa position dans le fichier).
Citation : le cast est pas bon (istream& read (char* s, streamsize n ); ) car C et inutile. |
Heu... je comprends pas ce que tu veux dire par là. Pourquoi le cast est pas bon et pourquoi c'est inutile ?
Marsh Posté le 09-06-2003 à 17:02:28
Citation : char * buffer = new char[2] |
Marsh Posté le 09-06-2003 à 17:39:53
ok mais si tu pouvais t'exprimer en français plutôt qu'en C, ça m'arrangerais... enfin tant pis...
Marsh Posté le 09-06-2003 à 17:43:56
Code :
|
à quoi sert le cast
Marsh Posté le 09-06-2003 à 14:39:22
Je débute en C++ et je suis en train d'essayer de lire des chaînes de tailles variables dans un fichier avec fstream. Et j'ai un petit problème : à chaque fois que j'initialise le buffer de lecture, il fait tout le temps 4 caractères de plus que ce que je mets. Je fais comme ça :
Vous voyez ce qui ne va pas ? :?: