Interception debordement buffer lors de la lecture d'un fichier ligne par ligne

0/5 (2 avis)

Snippet vu 3 858 fois - Téléchargée 37 fois

Contenu du snippet


Source / Exemple :


/* Interception d'un debordement de buffer 
   lors de la lecture d'un fichier ligne par ligne */

#include <iostream>
#include <fstream>
#include <string>

using namespace std ;

#define TAILLE_BUFFER 200

int main( void )
{
    // 1 caractere en plus pour la fin de ligne, 
	//et un autre pour s'assurrer qu'on a un debordement 

  char ligne[TAILLE_BUFFER + 2];
  
  fstream MonFic ("c:\\temp\\test.txt");

  if (! MonFic.is_open())
  { 
	  cout << "impossible d'ouvrir le fichier"  << endl;
	  return 1;
  }
   while (! MonFic.eof() )
  {	
		MonFic.getline (ligne, TAILLE_BUFFER + 2);
		int len = strlen(ligne);
		
		if ( (len >= 0) && (len <= TAILLE_BUFFER) )
		{
			//c bon on ne depasse pas
			cout<<"Ligne OK: \n"<< ligne<< endl;
		}
		else
		{
			//on depasse
			cout << "Debordement" << endl;
			return 1;
		}
  }
   return 0;
}

A voir également

Ajouter un commentaire Commentaires
dfrag Messages postés 2 Date d'inscription mardi 23 juillet 2002 Statut Membre Dernière intervention 8 août 2002
8 août 2002 à 08:06
t'inkiete pas il y a <string> et <string.h>, pareil pour les autres fichiers d'entete ;)))
donc ce n'est point un oubli
cs_gaya Messages postés 47 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 10 août 2002
8 août 2002 à 03:17
oublie pas les .h dans les noms des fichiers d'entêtes :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.