Lecture d'un fichier [Résolu]

Signaler
Messages postés
19
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
29 octobre 2006
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
lu

Voilà mon code :

#include <stdio.h>
#include
#include <stdlib.h>
using namespace std;
char *tmp;
unsigned int size;

int main(int argc, char *argv[])
{
FILE *fichier = fopen("fichier.txt", "wt");
   if(!fichier)
   {
         return 1;
   }
fseek(fichier, 0, SEEK_END);
size = ftell(fichier);
rewind(fichier);
tmp = (char*)malloc(size);
fread(tmp, sizeof(char*), size, fichier);
cout << tmp<<endl; 
}

Voilà quand j'affiche le texte et toute sorte de caractère (²²²²²²||||) apparaît

2 réponses

Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008

sizeof(char*) est la taille d'un pointeur, donc d'une adresse, soit 4 octets (ou 8 sur systèmes 64 bits).
Met plutôt sizeof(char) = 1 octet.
Rajoute aussi un zéro pour indiquer la fin de la chaine de caractère.
tmp[size] = 0; (fais le malloc avec size+1)

N'oublie pas de libérer la RAM allouée !
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Très mauvais style en tous de mélanger stdio.h et iostream