Maieuh pourquoi ça marche pas ? [résolu] - C - Programmation
Marsh Posté le 28-11-2008 à 12:14:59
tu testes pas le retour de ton fscanf...
Marsh Posté le 28-11-2008 à 12:37:03
Salut, et merci pour ta réponse.
Le fait de mettre le fscanf en paramètre de while n'équivaut-il pas à un if(fscanf(k,"%c",&l) != NULL) ?
Marsh Posté le 28-11-2008 à 12:41:47
Je ne sais pas si c'est lié à ton problème, mais en tout cas fscanf n'est pas vraiment adapté à ce que tu veux faire. Utilises plutôt fgetc().
Marsh Posté le 28-11-2008 à 12:42:27
cybkiller a écrit : Salut, et merci pour ta réponse. |
aux dernières nouvelles, fscanf ne renvoie pas null en fin de fichier.
Marsh Posté le 28-11-2008 à 16:06:27
J'ai modifié le paramètre de la boucle par
while(fscanf(k,"%c",&l) != EOF)
La boucle se termine mais dans le fichier "nv-code.txt" j'ai que des 0 ...
Pour fgetc je sais pas l'utiliser mais ça doit être possible de le faire avec fscanf (je suis en L1 Math-Info et j'ai pas encore vu la fonction fgetc; le prog de cryptage étant un exercice de cour)
edit: et j'ai changé la condition du if par if(l !=lettre[i-1]) parce que sinon, ça n'avait pas trop de sens ... maintenant j'ai que des "1 108" dans nv-code.txt ...
Marsh Posté le 28-11-2008 à 16:10:54
cybkiller a écrit : La boucle se termine mais dans le fichier "nv-code.txt" j'ai que des 0 ... |
Relis ton code...tu n'utilises jamais ce que tu as lu dans ton fichier...
Marsh Posté le 28-11-2008 à 16:12:35
et pour jouer, il se passe quoi si j'essaie de compresser des idéogrammes chinois selon ton algo ?
Marsh Posté le 28-11-2008 à 16:13:40
Harkonnen a écrit : et pour jouer, il se passe quoi si j'essaie de compresser des idéogrammes chinois selon ton algo ? |
fais pas de mauvais esprit, il débute...
Marsh Posté le 28-11-2008 à 16:41:24
Banzaïïïïïïï !!
c'est bon, le code fonctionne.
Je le poste pour ceux que ça interesse :
Code :
|
ps: j'ai écrit une fonction décoder pour être sur que ça marche, pour comparer le texte d'origine avec le texte codé puis décodé.
Merci
edit: je viens de remarquer que les backslash avant les "n" n'étaient pas retranscrits dans le code que je poste dans le forum donc, ce sera à vous de les mettre.
Marsh Posté le 28-11-2008 à 16:53:37
bien, maintenant tu essaies de compresser un texte chinois
Marsh Posté le 28-11-2008 à 17:18:00
C'est un programme destiné uniquement au marché européen et américain. Il est vendu pour 178€99 TTC seulement (pas) chez votre marchand de journaux...
Marsh Posté le 28-11-2008 à 18:01:28
Le problème c'est que dans le cas général, ton algo va en fait augmenter la taille du fichier.
Marsh Posté le 28-11-2008 à 12:10:30
Salut à vous,
Je voudrais faire un programme de compression de texte. Le principe est le suivant:
Il y a un tableau de int (occurences[]) et un de char(lettre[]).
-Le programme rencontre une lettre[i] dans le fichier texte
-Si la lettre[i] est la même que la lettre[i-1] alors occurences[i-1]++
-Sinon la lettre[i] est nouvelle lettre[i] = caractere lu et occurences[i]++
Donc si le texte est "AAAAAAAAAABBBBBB"
apres compression on devrait avoir 10 65 6 66
car il y a 10 caracteres 'A' et 6 caracteres 'B' .
Voilà le code :
J'ai mis des printf un peu partout pour en voir l'avancement et je m'aperçois que je reste bloqué dans la fonction CODER, a l'intérieur de la boucle WHILE.
Je ne comprends pas ce qui ne va pas ...
Message édité par cybkiller le 28-11-2008 à 16:42:58