PROBLÈME affichage contenu d'un fichier !

charleslemagicien Messages postés 12 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 16 août 2010 - 30 avril 2010 à 01:05
charleslemagicien Messages postés 12 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 16 août 2010 - 30 avril 2010 à 19:23
Bonjour à tous,

Dans mon programme je dois ouvrir et lire le contenu d'un fichier et l'afficher à l'écran pour l'instant aucun problème sa marche...

voici le contenu du fichier:

charles
AdminCharles
boss
Luka
luka2
marco

lorsque que je lis le fichier l'affichage à l'écran me renvoie les informations mais des caractères superflu s'ajoute à la fin...

affichage à l'écran:

charles
AdminCharles
boss
Luka
luka2
marco
IOON <---- Caractère étrange ?!?

je vous laisse la source en espérant que vous puissiez m'aider.

Merci d'avance

pFile = fopen( "C:\\Windows\\DBAcess\\User\\Accounts.acc" , "rb");


fseek (pFile, 0 , SEEK_END);
lsize = ftell (pFile);
rewind (pFile);

buffer = (char*) malloc (lsize);


fread (buffer, 1, lsize, pFile);

fclose (pFile);
printf("%s",buffer);
free(buffer);

printf("\n\n");

5 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
30 avril 2010 à 10:21
Essaie en changeant un morceau de ton code:

  buffer = malloc(lsize + 1);
  memset(buffer, '\0', lsize + 1);


Ici on intialise tout à zéro, ce qui évite d'avoir des caractères "pourris" qui trainent.
(Il faut inclure string.h).

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
0
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
30 avril 2010 à 14:53
Je sais bien que la performance n'a pas l'air de trop vous inquiéter, cependant mettre un zero final en fin de mémoire serait quand même plus judicieux.

Changer la valeur d'un octet semble en toute logique plus rapide qu'un memset sur un buffer.


@+
Arnotic,
Admin CS
0
tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
30 avril 2010 à 17:17
C'est vrai mais il est plus judicieux de mettre toute la zone à zéro plutôt que de parier sur le contenu futur.
Ne mettre à zéro qu'un caractère ne devrait se faire qu'après la copie du contenu désiré, quand on est certain de la quantité.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 avril 2010 à 18:14
Mais enfin, une fonction de lecture donne le nbr d'octets réellement lus, il n'y a donc qu'1 seul octet à mettre à 0.
Faire un memset est un amuse CPU, inutile et donc nuisible.

ciao...
BruNews, MVP VC++
0

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

Posez votre question
charleslemagicien Messages postés 12 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 16 août 2010
30 avril 2010 à 19:23
Merci pour toutes vos réponses !
0
Rejoignez-nous