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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 707 fois - Téléchargée 36 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

Messages postés
2
Date d'inscription
mardi 23 juillet 2002
Statut
Membre
Dernière intervention
8 août 2002

t'inkiete pas il y a <string> et <string.h>, pareil pour les autres fichiers d'entete ;)))
donc ce n'est point un oubli
Messages postés
47
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
10 août 2002

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.