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

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

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.