probleme avec fscanf et EOF - C - Programmation
Marsh Posté le 11-04-2006 à 19:53:00
ojou a écrit : Voila je fais un petit prog en C qui doit lire dans un fichier. |
C'est pas la peine. Les espaces sont les séparateurs 'naturels' de fscanf(). Tu boucles sur fscanf() en testant le code retour et c'est tout.
Code :
|
Marsh Posté le 11-04-2006 à 20:53:32
Merci ça marche mais maintenant j'ai un autre probleme... plus rien à voir avec le fscanf:
en fait les nombre que je lis dans mon fichier représentent le nombre de '0' puis de '1' puis de '0'... qui constituent des des caracteres.
J'ai fais une fonction qui convertis un tableau octet[8] en caractere (en fait c'est pas vraiment moi, c'est quelqu'un qui me l'a donné mais ça marche pas):
Code :
|
Sur le principe ça devrait être juste... mais ça m sors tout le temps le même caractere: Ì
Si vous pouviez encore me donner un petit coup de main... MERCI
Marsh Posté le 11-04-2006 à 21:00:15
for( i = 0; i < 8; i++ )
{
c += byte[i] == '1';
c <<= 1;
}
Marsh Posté le 11-04-2006 à 21:07:55
.....heu tu pourrais juste m'expliquer stp parce que je suis vraiment à un niveau mediocre en C... (vous aviez déjà remarquez j'imagine)
c c'est le caractere, byte mon tableau mais on peut faire << à un caractere??? qu'est-ce que ça représente?
Marsh Posté le 11-04-2006 à 21:12:31
un caractere est un type entier et << représente un décalage vers la gauche de la séquence de chiffres qui constitue la représentation binaire de ce nombre
si c == 0000 0001 en base 2
et que tu fais
c <<= 1; (equivalent à c = c << 1)
alors
c == 0000 0010 en base 2
Marsh Posté le 11-04-2006 à 21:52:35
Je comprends pas pourquoi ça ne marche pas... j'ai vérifier que j'avais les bonnes valeurs dans mon tableau et pourtant le caractere affiché n'a rien à voir !!!
Code :
|
C'es bien ce que tu as fais! si tu vois une erreur dis le moi stp...
Sinon c'est sympa de m'avoir aidé!!! j'ai vraiment avancé grace à vous!
Merci
Marsh Posté le 11-04-2006 à 22:14:03
ouai c'etait faux, il y avit un decalage en trop
for( i = 0; i < 8; i++ )
{
c <<= 1;
c += byte[i] == '1';
}
Marsh Posté le 11-04-2006 à 22:58:05
Bon je cherchais une erreur qui n'existait pas... en fait je convertissais l'hexa comme du décimal (honte à moi) et forcément j'avais pas le bon caractere....
Enfin bon c'est OK maintenant alors un grand merci à vous deux !!!!
Marsh Posté le 12-04-2006 à 16:57:16
Me revoila avec un autre probleme... en fait je recupere un fichier composé d'entiers qui compose un fichier image (jpeg par exemple). J'ai essayer d'utiliser mon programme pour décoder mon fichier mais le résultat n'est pas exploitable...
J'écris toujours de la meme façon (en %c).
Est-ce qu'il y a un moyen de rendre mon prog compatible avec n'importe quel type de fichier?
Je n'ai pas trouver utile de refaire un nouveau topic pour ma question...
MERCI d'avance !
Marsh Posté le 11-04-2006 à 19:32:16
Bonsoir!
Voila je fais un petit prog en C qui doit lire dans un fichier.
Le fichier est composé d'un nombre entier d'un espace d'un autre entier d'un espace entier espace....
Je fais un fscanf pour récupérer mon entier et un autre pour vérifier qu'il y a bien l'espace jusqu'a ce que je trouve la fin du fichier mais ça ne fonctionne pas....
voila un bout de mon prog:
voila voila... tout ce que ça fait c'est de me retourner le derniere entier de mon fichier texte et un caractere "espace"... si vous pouvez m'aider ça serai super !!!
Merci