Suite de mes nombreux probleme ...... - C++ - Programmation
Marsh Posté le 28-08-2002 à 14:33:34
et j ai aussi un autre problem
Code :
|
j aimerais que la boucle while s arretes aussi qd il y a retour a la ligne mais la bocule :
Code :
|
ne fonctionne pas car il n y a rien dans mon fichier resultat
Marsh Posté le 28-08-2002 à 14:44:30
J'ai pas regardé le reste,mais c'est-y correct
while ((lettre=fgetc(source)) !=(';' || '\n') ?
faudrait pas faire plutôt
lettre = fgetc(source);
(lettre != ';' || (lettre != '\n'
if (a != b ou a != d) mais pas if (a != (b ou d)).
Le (b ou d), c'est utile quand on veut faire une combinaison de bits, mais c'est pas cet opérateur.
Marsh Posté le 28-08-2002 à 14:48:25
Et puis il vaudrait mieux mettre && a la place du || parce que sinon ta boucle ne s'arretera jamais
Marsh Posté le 28-08-2002 à 14:52:15
try58 a écrit a écrit : Et puis il vaudrait mieux mettre && a la place du || parce que sinon ta boucle ne s'arretera jamais |
ha bon ????
mais si je mets && ca voudrais dire que le caractere doit s arrete qd le caractere est egale a ; et a \n ???
or c impossible
Marsh Posté le 28-08-2002 à 14:54:50
Lenoiche a écrit a écrit : ha bon ???? mais si je mets && ca voudrais dire que le caractere doit s arrete qd le caractere est egale a ; et a \n ??? or c impossible |
Non justement! Ca veut dire que ta boucle continuera tant que lettre != ';' ET lettre != '\n'
Marsh Posté le 28-08-2002 à 15:01:12
try58 a écrit a écrit : Non justement! Ca veut dire que ta boucle continuera tant que lettre != ';' ET lettre != '\n' |
ha oui en effet autant pour moi
Marsh Posté le 28-08-2002 à 15:34:03
Code :
|
ca ne marche pas
Marsh Posté le 28-08-2002 à 15:42:53
Qu'est ce qu'il te fait?
Marsh Posté le 28-08-2002 à 15:49:38
Ben non ! Il vaut mieux faire :
Code :
|
Sinon tu ne prend que la premiere lettre et après tu boucle à l'infini !
Marsh Posté le 28-08-2002 à 15:50:15
Code :
|
j ai 2 fichiers .txt comprenant des champs separés par des ;
je prends les champs dont j ai besoin et je les palce dans un 3eme fichier .txt
mais dans un des fichiers il y a des champs vide et donc ca merde lorsque je lit un champs vide , c a d qd dans le fichier il rencontre ;;
Marsh Posté le 28-08-2002 à 15:53:10
BB138 a écrit a écrit : Ben non ! Il vaut mieux faire :
Sinon tu ne prend que la premiere lettre et après tu boucle à l'infini ! |
ca marche thx
mais je comprends pas pq ca ca marchais pas
Code :
|
Marsh Posté le 28-08-2002 à 15:53:31
Dans une boucle, cela permettrait d'avoir un caractère frais à chaque fois
do
{
lettre=fgetc(source);
} while ((lettre != ';' && (lettre!='\n')
Ne pas oublier de tester EOF ..
Exemple de fgetc()
int ch;
do
{/* read a char from the file */
ch = fgetc(stream);
/* display the character */
putch(ch);
} while (ch != EOF);
Si j'ai le temps plus tard, je regarde de + près.
Marsh Posté le 28-08-2002 à 15:55:28
Lenoiche a écrit a écrit : ca marche thx mais je comprends pas pq ca ca marchais pas
|
Parce que lettre ne change pas!
Marsh Posté le 28-08-2002 à 16:07:23
try58 a écrit a écrit : Parce que lettre ne change pas! |
moi pas comprendre ............
Marsh Posté le 28-08-2002 à 16:12:42
Lenoiche a écrit a écrit : moi pas comprendre ............ |
En fait quand tu fais ton fgetc(...) tu remplies lettre une premiere fois. Ensuite tu rentres dans ta boucle while().
Mais tu n'en ressors que si lettre est egale a ';' ou '\n'.
Or imaginons que la lettre vaut 'b', tu ne sortira jamais de ta boucle while puisque lettre vaudra toujours 'b'.
Tu es oblige de refaire un fgetc() pour chaque iteration de ta boucle while.
J'ai ete assez clair?
Marsh Posté le 28-08-2002 à 16:25:15
ha oui en effet
compris 5/5
merchi a tt le monde mon programme a l air de tourner correctement .
je le posterais qd j aurais finis pour que vous rigoliez
Marsh Posté le 30-08-2002 à 02:58:16
Pour la copie de champ:
Version claire
Code :
|
Version compactée
Code :
|
Version trop compactée
Code :
|
Version vraiment illisible
Code :
|
Il est nécessaire que lettre soit un int pour pouvoir représenter EOF.
Possibilité pour la fonction espace:
Code :
|
Pour la comparaison:
Code :
|
Ou comme ça:
Code :
|
J'ai mis getValeur en tête pour éviter d'avoir à en faire un avant la boucle, ce que je suppose que tu fais.
Marsh Posté le 28-08-2002 à 14:15:52
je rappelle succintement ce que je dois faire
j'ai 2 fichiers en .txt , dans lequel les champs sont séparé par des ;
et dans un des fichiers il y a des champs vide donc il y a ;; (sans espace)
et il faut que je prenne dans le 1er fichier , un champs ensuite dans le 2eme fichier chercher ou le champs est repete
et donc j tutilise cela
var1 et var2 sont des tableaux contenant une chaine de caractere
source2 est la variable de type FILE pointant vers le 2eme fichier.
et donc le pb c que la boucle sarrete lorsque dans le fichier 2 , le pointeur de lecture arrive sur une suite tel qu'on ai ;;
je ne sais pas trop comment faire