Prob pour coder fichier sur une matrice

Jazz_s Messages postés 4 Date d'inscription jeudi 28 avril 2005 Statut Membre Dernière intervention 29 avril 2005 - 28 avril 2005 à 11:49
MNEMONIC Messages postés 59 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 1 septembre 2006 - 29 avril 2005 à 09:42
je voudrais lire un fichier via fstream et ensuite reproduire celui ci parfaitement dans une matrice pour pouvoir jongler facilement par apres avec les differents elements:

#include <fstream>
#include


using namespace std;


int main()
{
char V[256][256];
ifstream file ("map.txt");
for (int i=0;file.eof()==0;i++)
{ for (int j=0;V[i][j]!='\n';++j)
{ file>>V[i][j];
}
}cout<<V[1][0];}

g tape ceci en me disant qu'a chaque saut de ligne detecte sur le fichier, je passerais a la ligne suivante de ma matrice, mais quand je demande d'afficher la matrice, tout bug et rien ne va comme je l'avais prevu sans que je ne comprenne pq.Ce serait sympa de me donner un ptit coup de poucer (sans string svp) merci

6 réponses

MNEMONIC Messages postés 59 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 1 septembre 2006
28 avril 2005 à 15:13
char *buff;
char V[256][256];
FILE* file = fopen("e:\\test\\map.txt","r");
for (int i=0;;i++)
{
buff = (char *)V + (256 * i);
if(!fread(buff,sizeof(char),257,file))
break;
}
fclose(file);

Et en prime, tu fais sauter une boucle imbriquée...
0
Jazz_s Messages postés 4 Date d'inscription jeudi 28 avril 2005 Statut Membre Dernière intervention 29 avril 2005
29 avril 2005 à 08:46
merci pour la reponse, g compile ca (g quand mm pense a change le repertoire de map.txt ...) et ca reagit exactement comme avant!
j'utilise blooshead dev c++, c'est une source de prob?
tu avais essayede compiler le prog? je ne peux mm pas le verif je ne comprends pas ttes lignes (je debute et il y a la des symboles que je nai pas encore rencontre... oui je debute vraiment :d)
0
Jazz_s Messages postés 4 Date d'inscription jeudi 28 avril 2005 Statut Membre Dernière intervention 29 avril 2005
29 avril 2005 à 08:55
De plus, cela va servir de base uà un nbrave et meticuleux travail scolaire ...
je pense que les breaks sont pas du mieux vu, et comme je nai jamais vu les commandes de type (char *)V,ce serait encore plus sympa ( :p) si le prog ne faisait appel qu'a fstream et ses file.get (), etc ...
0
MNEMONIC Messages postés 59 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 1 septembre 2006
29 avril 2005 à 09:22
le (char *), c'est juste pour caster (forcer le type) du char [256][256], de façon à le traiter comme une chaine et non des blocs caractère.

Pour le compilo, j'utilise le même.
Je pense que ça doit plutôt venir du contenu de ton fichier...
Essaye de l'éditer en exa pour voir les caractères qui constituent la fin de ligne(juste pour vérifier leur nombre, savoir s'il y a \r\n ou seulement \n)...
Si tu veux sautter plus de caractères, tu augmentes la valeur dans le fread.

En fait, à chaque boucle, la lecture du fichier insère aussi les caractères de fin de ligne, mais grâce au repositionnement du buff, tu écrases les caractères qui dépassent la longueur de la ligne. Par contre, je pense que ça doit poser un problème pour la dernière ligne (la 256ème), que tu peux résoudre en ajouttant une ligne au tableau...

Si tu as des questions sur le code, précise les...

Ah, et oui, j'ai testé quand même...
J'ai créé une fichier texte avec 256 caractères par ligne, sur plusieures lignes...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jazz_s Messages postés 4 Date d'inscription jeudi 28 avril 2005 Statut Membre Dernière intervention 29 avril 2005
29 avril 2005 à 09:42
Je suis impressionne pa la vitesse des reponses , bravo, ca fait plaisir quand mm.
Bien je suis arrive a quelque chose en tombant dans la facilite, g repris ce que j'avais essaye au debut pour me rendre compte que ca marchait, j'avais surement oublie une connerie, faut dire que y avait qq sources de distraction, ca m'a un peu donne envie de me pendre vu que g pas mal cherche d'autres sol comme un c**, ca a ete l'ocdcaz de decouvrir qq trucs ...

#include
#include <fstream>


using namespace std;


int main()
{
char mat[256][256];
ifstream f("map.txt");
for (int i=0;f.eof()==0;i++)
{f.getline(mat[i],256);
cout << mat[i] << endl;
}
f.close();
cout<<mat[1][0];
}

ca a l'air de fonctionner.

Neanmoins, comment est ce que je peux editer en hexa?
Et quelle pourrait etre, a priori et sans recherche poussee, la raison de l'echec du fonctionnement du prog pour lequel tu as patiemment travaille, et ca dans le seul but de m'aider! lol :p
0
MNEMONIC Messages postés 59 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 1 septembre 2006
29 avril 2005 à 09:42
J'ai repris aussi ton code avec mon fichier texte, et ça a l'air de fonctionner...
Donc vérifie ton fichier.
0
Rejoignez-nous