Lecture d'un fichier

Résolu
Darkvlador Messages postés 19 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 29 octobre 2006 - 11 juin 2006 à 20:17
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 11 juin 2006 à 20:37
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

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
11 juin 2006 à 20:24
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 !
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 juin 2006 à 20:37
Très mauvais style en tous de mélanger stdio.h et iostream
0
Rejoignez-nous