Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Langages » C & Cie. » lecture fichiers en C

zuzuf
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 04/04/2007 à 13:16
oui tu peux toujours utiliser fprintf avec ce code, et lire la première ligne avec fgets.
Pour les autres lignes, comme tout est "collé", il suffit de détecter la fin de la ligne à chaque fois ( '\n', avec '\r' en plus sous windows ) => ça fait modifier un peu le code que j'ai posté
Linux a un noyau, windows un pepin
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 06/04/2007 à 18:35
oui, mais j'ai tjs le problème de passer à la bonne ligne. Voila en fait là, je lis la première ligne avec fgets et je récupère chaque valeur avec strtod. Mais si je lit la matrice avec fgetc, il va recommencer au début du fichier non ? Comment se positionner au début de la deuxième ligne ?

"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 06/04/2007 à 18:43
alors je me répond, apparemment, c'est automatique... Mais, j'ai un problème (héhé (pour changer !).

Il affiche bien le nombre de lignes et de colonnes, mais y a un petit foirage. Voila ce que j'obtiens :


000000000
-3800000000
0-380010000
00-38000000
000-3800000
0000-380000
00000-38000
000000-3800



Pour le code suivant :


int getMatrix[width][height];

for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
getMatrix[x][y] = fgetc(file) - '0';
}
}

// Prints test Matrix :

for (int y = 0; y < height; y++) {
for (int x = 0 ; x < width; x++) {
printf("%d", getMatrix[x][y]);
}
printf("\n");
}



Ca doit etre un ptit détail, pcq ça fonctionne presque !
"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 06/04/2007 à 20:24
ha oui.... et si j'ai -1 dans mon fichier ça ira avec la technique du -'0' ?
"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore
zuzuf
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 06/04/2007 à 21:36
aïe, non si les nombres ,ne sont pas compris entre 0 et 9 ça ne marche plus.
avec les signes '-', il faut regarder lorsqu'il y en a un on prend l'opposé de la valeur qui suit.
Linux a un noyau, windows un pepin
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 06/04/2007 à 21:55
et pour mon probleme d'affichage de -38 la, tu as une idée ?
"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore
Freem
Modérateur
RemonterCiter Windows XP Msie 6 - Posté le 06/04/2007 à 23:23
Euh, tu aurai du avoir quoi a la place, en fait?
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin
zuzuf
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 07/04/2007 à 10:22
le -38 est du au '\r' ('0' - 38) qu'il y a à chaque fin de ligne, il faut les sauter
le code que tu as utilisé ne fait que lire la matrice "en ligne" et ignore les sauts de ligne. Ce qui induit un décalage à chaque nouvelle ligne.

le code devrait ressembler à ça:


int getMatrix[width][height];

for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
char c = getc(file);
while( c == '\r' || c== '\n' ) c=getc(file);
getMatrix[x][y] = c - '0';
}
}



là normalement ça ignore les sauts de ligne en tout genre et ça devrait être multiplateforme
Linux a un noyau, windows un pepin
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 07/04/2007 à 16:03
waii ça marche hyper bien merci bcp !
"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,089 s - Crédits - Stats
2 connectés 1 membre