Un programme pour indenter les fichier en .cpp, .h, .c, .java

Soyez le premier à donner votre avis sur cette source.

Vue 3 812 fois - Téléchargée 142 fois

Description

deja, pour que votre fichier soit bien indenter, il ne faut surtout pas mettre de 'entree' et de 'tabulation', il faut tout aligner sur une ligne, car parfois ca bug si vous indenter un fichier qui l'est deja!!!
vous pouvez le modifier, en plus les fonction utiler sont en francais, et il y a des commentaire.(mon programme ne gere pas les commentaire)
c'est mon premier annee de BTS IRIS, et c'est le premier projet que je devait realiser.
j'espere qu'il sert a quelque chose, lol!!
faite un copier coller et tester le avec visual c++!!

Source / Exemple :


#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include <stdlib.h>

/**************** declaration des fonctions *******************************************/
																					/**/
 int RechercheCaractere(char ContenuFichier[1000000], int d);						/**/
 void DecalageEtAjoutTabulation(char ContenuFichier[1000000],int pos);				/**/
 void DecalageEtAjoutEntree(char ContenuFichier[1000000],int pos);					/**/
 void DecalageEtAjoutEspace(char ContenuFichier[1000000],int pos);					/**/
 void Decalage(char ContenuFichier[1000000],int pos);								/**/
																					/**/
/**************************************************************************************/

/*************** fonction principale **************************************************/
 void main ()																		/**/
 {																					/**/
	fstream f;																		/**/
	fstream g;																		/**/
	char NomFichier[50];															/**/
	char ContenuFichier[1000000];													/**/
	int a=0,b=0,i=0,d=0,p;															/**/
																					/**/
	cout<<"entrez le nom du fichier a indenter: "<<endl;							/**/
	cin>>NomFichier;																/**/
																					/**/
	f.open( NomFichier, ios::in );//ouverture du fichier							/**/
																					/**/
	if(f.fail())//test si fichier est bien ouvert									/**/
	{																				/**/
		cout<<"il y a erreur lors de l'ouverture du fichier!!!"<<endl;				/**/
		exit(1);																	/**/
	}																				/**/
																					/**/
	do																				/**/
	{																				/**/
		if(!f.eof())																/**/
		{																			/**/
			f.get(ContenuFichier[a]);												/**/
		}																			/**/
		a++;																		/**/
	}while(!f.eof());																/**/
																					/**/
	ContenuFichier[a]=0x00;															/**/
																					/**/
	f.close();//fermeture du fichier												/**/
																					/**/
	p=RechercheCaractere(ContenuFichier,a);											/**/
																					/**/
	for(i=0;i<=p;i++)																/**/
	{																				/**/
		cout<<ContenuFichier[i];													/**/
	}																				/**/
																					/**/
	g.open("save.txt", ios::out );													/**/
																					/**/
	g.write(ContenuFichier,p);														/**/
	g.close();																		/**/
 }																					/**/
/**************************************************************************************/

/***********************Définition des fonctions***************************************/
																					/**/
																					/**/
//Fonction qui decale et qui rajoute un espace										/**/
																					/**/
void DecalageEtAjoutEspace(char ContenuFichier[1000000],int pos)					/**/
{																					/**/
	int i=0,j;																		/**/
																					/**/
	do																				/**/
	{																				/**/
		i++;																		/**/
																					/**/
	}while(ContenuFichier[i] != 0x00);												/**/
																					/**/
	i=i+1;																			/**/
																					/**/
	for(j=i;j>=pos;j--)																/**/
	{																				/**/
		ContenuFichier[j+1]=ContenuFichier[j];										/**/
	}																				/**/
																					/**/
	ContenuFichier[pos]=' ';														/**/
}																					/**/
																					/**/
/********************************************/										/**/
																					/**/
//Fonction qui decale et qui rajoute un entree										/**/
																					/**/
void DecalageEtAjoutEntree(char ContenuFichier[1000000],int pos)					/**/
{																					/**/
	int i=0,j;																		/**/
																					/**/
	do																				/**/
	{																				/**/
		i++;																		/**/
																					/**/
	}while(ContenuFichier[i] != 0x00);												/**/
																					/**/
	i=i+1;																			/**/
																					/**/
	for(j=i;j>=pos;j--)																/**/
	{																				/**/
		ContenuFichier[j+1]=ContenuFichier[j];										/**/
	}																				/**/
																					/**/
	ContenuFichier[pos]='\n';														/**/
}																					/**/
																					/**/
/********************************************/										/**/
																					/**/
//Fonction qui decale et qui rajoute une tabulation									/**/
																					/**/
void DecalageEtAjoutTabulation(char ContenuFichier[1000000],int pos)				/**/
{																					/**/
	int i=0,j;																		/**/
																					/**/
	do																				/**/
	{																				/**/
		i++;																		/**/
																					/**/
	}while(ContenuFichier[i] != 0x00);												/**/
																					/**/
	i=i+1;																			/**/
																					/**/
	ContenuFichier[i]=0x00;															/**/
																					/**/
	for(j=i;j>=pos;j--)																/**/
	{																				/**/
		ContenuFichier[j+1]=ContenuFichier[j];										/**/
	}																				/**/
																					/**/
	ContenuFichier[pos]='\t';														/**/
}																					/**/
																					/**/
/*******************************************/										/**/
//decale la partie droite,vers la gauche,											/**/
//d'un cran a partir de l'endroit ou l'on est.										/**/
																					/**/
void Decalage(char ContenuFichier[1000000],int pos)									/**/
{																					/**/
	int j;																			/**/
																					/**/
	j=pos;																			/**/
																					/**/
	do																				/**/
	{																				/**/
		ContenuFichier[j]=ContenuFichier[j+1];										/**/
		j++;																		/**/
																					/**/
	}while(ContenuFichier[j] != 0x00);												/**/
}																					/**/
/**************************************************************************************/

/**************************************************************************************/
																					/**/
/******Fonction qui recherche des caractères********/								/**/
																					/**/
int RechercheCaractere(char ContenuFichier[1000000], int d)							/**/
{																					/**/
																					/**/
	int i=0,j=0,pos,m,n,l=1,k,b=0,c=0,h=0,z=0,p;									/**/
																					/**/
																					/**/
																					/**/
			/*****recherche et efface une tabulation  ********/						/**/
																					/**/
		do	//boucle servant a supprimer les entrees et les tabulations				/**/
		{																			/**/
			if(ContenuFichier[b]=='\t')												/**/
			{																		/**/
				pos=b;																/**/
				Decalage(ContenuFichier,pos);										/**/
				b--;	//on decremente, car au même endroit						/**/
			}			//on peut avoir une tabulation								/**/
																					/**/
																					/**/
																					/**/
			/*****recherche et efface un entree  ******/							/**/
																					/**/
																					/**/
			else if(ContenuFichier[b]=='\n')										/**/
			{																		/**/
				pos=b;																/**/
				Decalage(ContenuFichier,pos);										/**/
				b--;	//on decremente, car au même endroit						/**/
			}			//on peut avoir une tabulation								/**/
																					/**/
																					/**/
			b++;																	/**/
																					/**/
																					/**/
		}while(ContenuFichier[b] != 0x00);	//tant qu'on a pas fin de caractère		/**/
																					/**/
																					/**/
		ContenuFichier[b-1] =0x00;	//on marque la fin de caractère					/**/
																					/**/
																					/**/
		do	//boucle servant à ajouter des espaces selon les cas, puis a ajouter	/**/
		{	//des entree dans certaines conditions									/**/
																					/**/
			/************recherche un ';'**********/								/**/
																					/**/
																					/**/
			if(ContenuFichier[i]==';')	//si on rencontre un ";"					/**/
			{																		/**/
				if(ContenuFichier[i-1]==' ')//si on a une espace avant ';'			/**/
				{																	/**/
						//on fait rien												/**/
				}																	/**/
																					/**/
				else	//sinon on rajoute un espace devant							/**/
				{																	/**/
					pos=i;															/**/
					DecalageEtAjoutEspace(ContenuFichier,pos);						/**/
				
				}
					
			}

			if(ContenuFichier[i]==';')	//si on a un ";" (pour l'ajout d'un entree apres)
			{
				if(ContenuFichier[i+1]=='\0') //si on a un entree juste apres ';', on fait rien
				{//si on a un entree apres ';' ou qu'on est compris entre '(' et ')', on fait rien
				}

				else
				{
					pos=i+1;			//sinon, on rajoute un entree apres ';'
					DecalageEtAjoutEntree(ContenuFichier,pos);

				}
			}

			/***************recherche un 'entree' avant le 'COUT' ********/

			else if(ContenuFichier[i]=='c' && ContenuFichier[i+1]=='o' && ContenuFichier[i+2]=='u' && ContenuFichier[i+3]=='t')	
			{
				if(ContenuFichier[i-1]=='\n')
				{
								
				}

				else			
				{
					pos=i-1;						//sinon on rajoute un espace devant
					DecalageEtAjoutEntree(ContenuFichier,pos);
				
				}
					
			}

			/***************recherche un 'entree' avant le 'CIN' ********/

			else if(ContenuFichier[i]=='c' && ContenuFichier[i+1]=='i' && ContenuFichier[i+2]=='n')	
			{
				if(ContenuFichier[i-1]=='\n')
				{
								
				}

				else			
				{
					pos=i-1;		//sinon on rajoute un espace devant
					DecalageEtAjoutEntree(ContenuFichier,pos);
				
				}
					
			}
		

	
		/****************************recherche un '=' ou '=='*****************/	
			
			else if(ContenuFichier[i]=='=')//si on rencontre un "="
			{
				if(ContenuFichier[i]=='=' && ContenuFichier[i+1]=='=')//si le caractere"=" est suivie de '='
				{
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{																// apres '==', on ne fait rien
					
					}
					

					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '=='
						{								// on met une espace apres '=='
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
						
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '=='
						{									//on met une espace devant '=='
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						
						}
						else		//si on a pas d'espace devant et apres '==', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
					
				}

				else if(ContenuFichier[i]=='=' && ContenuFichier[i-1]=='=' ||
					ContenuFichier[i]=='=' && ContenuFichier[i-1]=='!' ||
					ContenuFichier[i]=='=' && ContenuFichier[i-1]=='<' ||
					ContenuFichier[i]=='=' && ContenuFichier[i-1]=='>')
					//on met tous ici, car c'est par cette condition qu'on a un '=',
					//dans les autre en dessous, on cherche d'abord '!', ou'<' ou '>'
				{
										//si on a '=' et q'avant on avait '='
				}									//on ne fait rien, car l'espace est deja mis 
													//par la condition en haut
			
				else	//si on a seulement '=', 							
				{	
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
					{
									//si on a une espace devant et apres
					}									// '=', on ne fait rien

					else if(ContenuFichier[i-1]==' ')//si on a seulement un espace devant '='
					{									//on rajoute un espace apres '='
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
					
					}

					else if(ContenuFichier[i+1]==' ')//si on a seulement un espace apres '='
					{									//on rajoute un espace avant '='
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
				
					}

					else //sinon on met un espace a doite et a gauche
					{
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos);
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
					
					}
				}

			}

		/****************************recherche un '!=' ou '!'*****************/
			
			else if(ContenuFichier[i]=='!')//si on rencontre un "!"
			{
				if(ContenuFichier[i]=='!' && ContenuFichier[i+1]=='=')//si le caractere"!" est suivie de '='
				{
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{																// apres '!=', on ne fait rien
					
					}
					

					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '!='
						{								// on met une espace apres '!='
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
						
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '!='
						{									//on met une espace devant '!='
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						
						}
						else		//si on a pas d'espace devant et apres '!=', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
					
				}

			
				else	//si on a seulement '!', 							
				{	
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
					{
									//si on a une espace devant et apres
					}									// '!', on ne fait rien

					else if(ContenuFichier[i-1]==' ')//si on a seulement un espace devant '!'
					{									//on rajout un espace apres '!'
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
					
					}

					else if(ContenuFichier[i+1]==' ')//si on a seulement un espace apres '!'
					{									//on rajoute un espace avant '!'
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
				
					}

					else //sinon on met un espace a doite et a gauche
					{
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos);
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
					
					}
				}

			}

		/****************************recherche un '>=' ou '>' ou '>>'***************/		
			
			else if(ContenuFichier[i]=='>')//si on rencontre un ">"
			{

				if(ContenuFichier[i]=='>' && ContenuFichier[i+1]=='>')//si le caractere">" est suivie de '>'
				{
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{								// apres '>>', on ne fait rien
					
					}

					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '>>'
						{								// on met une espace apres '>>'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '>>'
						{									//on met une espace devant '>>'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						}
						else		//si on a pas d'espace devant et apres '>>', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
				}

				else if(ContenuFichier[i]=='>' && ContenuFichier[i-1]=='>')
				{
						//si on a '>' et q'avant on avait '>'
				}					//on ne fait rien, car l'espace est deja mis 
									//par la fonction en haut

				else if(ContenuFichier[i]=='>' && ContenuFichier[i+1]=='=')//si le caractere">" est suivie de '='
				{
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{																// apres '>=', on ne fait rien
					
					}
					
					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '>='
						{								// on met une espace apres '>='
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
						
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '>='
						{									//on met une espace devant '>='
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						
						}
						else		//si on a pas d'espace devant et apres '>=', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
					
				}

			
				else	//si on a seulement '>', 							
				{	
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
					{
									//si on a une espace devant et apres
					}									// '>', on ne fait rien

					else if(ContenuFichier[i-1]==' ')//si on a seulement un espace devant '>'
					{									//on rajout un espace apres '>'
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
					
					}

					else if(ContenuFichier[i+1]==' ')//si on a seulement un espace apres '>'
					{									//on rajoute un espace avant '>'
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
				
					}

					else //sinon on met un espace a doite et a gauche
					{
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos);
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
					
					}
				}

			}

		/****************************recherche un '<=' ou '<' ou '<<'******************/		
			
			else if(ContenuFichier[i]=='<')//si on rencontre un "<"
			{

				if(ContenuFichier[i]=='<' && ContenuFichier[i+1]=='<')//si le caractere"<" est suivie de '<'
				{
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{								// apres '<<', on ne fait rien
					
					}

					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '<<'
						{								// on met une espace apres '<<'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '<<'
						{									//on met une espace devant '<<'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						}
						else		//si on a pas d'espace devant et apres '<<', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
				}

				else if(ContenuFichier[i]=='<' && ContenuFichier[i-1]=='<')
				{
						//si on a '<' et q'avant on avait '<'
				}					//on ne fait rien, car l'espace est deja mis 
									//par la fonction en haut

				else if(ContenuFichier[i]=='<' && ContenuFichier[i+1]=='=')//si le caractere"<" est suivie de '='
				{

					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{																// apres '<=', on ne fait rien
					
					}
					

					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '<='
						{								// on met une espace apres '<='
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
						
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '<='
						{									//on met une espace devant '<='
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						
						}
						else		//si on a pas d'espace devant et apres '<=', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
					
				}

			
				else	//si on a seulement '<', 							
				{	
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
					{
									//si on a une espace devant et apres
					}									// '<', on ne fait rien

					else if(ContenuFichier[i-1]==' ')//si on a seulement un espace devant '<'
					{									//on rajout un espace apres '<'
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
					
					}

					else if(ContenuFichier[i+1]==' ')//si on a seulement un espace apres '<'
					{									//on rajoute un espace avant '<'
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
				
					}

					else //sinon on met un espace a doite et a gauche
					{
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos);
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
					
					}
				}

			}

		/*****************************recherche un '&'********************/

			
			else if(ContenuFichier[i]=='&')//si on rencontre un "&"
			{
				if(ContenuFichier[i]=='&' && ContenuFichier[i+1]=='&')//si le caractere"&" est suivie de '&'
				{
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{																// apres '&&', on ne fait rien
					
					}

					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '&&'
						{								// on met une espace apres '&&'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
						
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '&&'
						{									//on met une espace devant '&&'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						
						}
						else		//si on a pas d'espace devant et apres '&&', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
				}

				else if(ContenuFichier[i]=='&' && ContenuFichier[i-1]=='&')
				{
								//si on a '&' et q'avant on avait '&'
				}									//on ne fait rien, car l'espace est deja mis 
													//par la fonction en haut
			
				else	//si on a seulement '&', 							
				{	
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
					{
									//si on a une espace devant et apres
					}									// '&', on ne fait rien

					else if(ContenuFichier[i-1]==' ')//si on a seulement un espace devant '&'
					{									//on rajout un espace apres '&'
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
					
					}

					else if(ContenuFichier[i+1]==' ')//si on a seulement un espace apres '&'
					{									//on rajoute un espace avant '&'
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
			
					}

					else //sinon on met un espace a doite et a gauche
					{
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos);
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
					
					}
				}
			}

		/***************************recherche un '|'*******************/

			
			else if(ContenuFichier[i]=='|')//si on rencontre un "|"
			{
				if(ContenuFichier[i]=='|' && ContenuFichier[i+1]=='|')//si le caractere"|" est suivie de '|'
				{
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{																// apres '||', on ne fait rien
					
					}

					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '||'
						{								// on met une espace apres '||'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
					
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '||'
						{									//on met une espace devant '||'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						
						}
						else		//si on a pas d'espace devant et apres '||', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
				}

				else if(ContenuFichier[i]=='|' && ContenuFichier[i-1]=='|')
				{
								//si on a '|' et q'avant on avait '|'
				}									//on ne fait rien, car l'espace est deja mis 
													//par la fonction en haut
			
				else	//si on a seulement '|', 							
				{	
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
					{	
										//si on a une espace devant et apres
					}									// '|', on ne fait rien

					else if(ContenuFichier[i-1]==' ')//si on a seulement un espace devant '|'
					{									//on rajout un espace apres '|'
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
				
					}

					else if(ContenuFichier[i+1]==' ')//si on a seulement un espace apres '|'
					{									//on rajoute un espace avant '|'
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
				
					}

					else //sinon on met un espace a doite et a gauche
					{
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos);
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
					
					}
				}
			}

			/************************recherche un '+'***********************/

			else if(ContenuFichier[i]=='+')//si on rencontre un "+"
			{
				if(ContenuFichier[i]=='+' && ContenuFichier[i+1]=='+')//si le caractere"+" est suivie de '+'
				{
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{																// apres '++', on ne fait rien
					
					}

					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '++'
						{								// on met une espace apres '++'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
						
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '&&'
						{									//on met une espace devant '&&'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						
						}
						else		//si on a pas d'espace devant et apres '++', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
				}

				else if(ContenuFichier[i]=='+' && ContenuFichier[i-1]=='+')
				{
								//si on a '&' et q'avant on avait '&'
				}									//on ne fait rien, car l'espace est deja mis 
													//par la fonction en haut
			
				else	//si on a seulement '+', 							
				{	
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
					{
									//si on a une espace devant et apres
					}									// '+', on ne fait rien

					else if(ContenuFichier[i-1]==' ')//si on a seulement un espace devant '+'
					{									//on rajout un espace apres '&'
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
					
					}

					else if(ContenuFichier[i+1]==' ')//si on a seulement un espace apres '+'
					{									//on rajoute un espace avant '+'
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
			
					}

					else //sinon on met un espace a doite et a gauche
					{
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos);
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
					
					}
				}
			}

			/************************recherche un '-'***************/

			else if(ContenuFichier[i]=='-')//si on rencontre un "-"
			{
				if(ContenuFichier[i]=='-' && ContenuFichier[i+1]=='-')//si le caractere"-" est suivie de '-'
				{
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{																// apres '--', on ne fait rien
					
					}

					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '--'
						{								// on met une espace apres '--'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
						
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '--'
						{									//on met une espace devant '--'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						
						}
						else		//si on a pas d'espace devant et apres '--', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
				}

				else if(ContenuFichier[i]=='-' && ContenuFichier[i-1]=='-')
				{
								//si on a '-' et q'avant on avait '-'
				}									//on ne fait rien, car l'espace est deja mis 
													//par la fonction en haut
			
				else	//si on a seulement '-', 							
				{	
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
					{
									//si on a une espace devant et apres
					}									// '-', on ne fait rien

					else if(ContenuFichier[i-1]==' ')//si on a seulement un espace devant '-'
					{									//on rajout un espace apres '-'
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
					
					}

					else if(ContenuFichier[i+1]==' ')//si on a seulement un espace apres '-'
					{									//on rajoute un espace avant '-'
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
			
					}

					else //sinon on met un espace a doite et a gauche
					{
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos);
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
					
					}
				}
			}

			/************************recherche un '*'********************/

			else if(ContenuFichier[i]=='*')
			{	
				if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
				{
				
				}									

				else if(ContenuFichier[i-1]==' ')
				{						
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
				
				}

				else if(ContenuFichier[i+1]==' ')
				{	
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
			
				}

				else //sinon on met un espace a doite et a gauche
				{
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
					DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
				
				}

			}

			/************************recherche un '/' ou '//'***************/

			
			else if(ContenuFichier[i]=='/')//si on rencontre un "/"
			{
				if(ContenuFichier[i]=='/' && ContenuFichier[i+1]=='/')//si le caractere"/" est suivie de '/'( '//' pour les commentaires)
				{
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+2]==' ')//si on a une espace devant et
					{																// apres '//', on ne fait rien
					
					}

					else
					{
						if(ContenuFichier[i-1]==' ')//si on a juste une espace devant '//'
						{								// on met une espace apres '//'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
						
						}
						else if(ContenuFichier[i+2]==' ')//si on a juste une espace apres '//'
						{									//on met une espace devant '//'
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
						
						}
						else		//si on a pas d'espace devant et apres '//', on en rajoute
						{
							pos=i;
							DecalageEtAjoutEspace(ContenuFichier,pos);
							DecalageEtAjoutEspace(ContenuFichier,pos=pos+3);
						
						}
					}
				}

				else if(ContenuFichier[i]=='/' && ContenuFichier[i-1]=='/')
				{
								//si on a '/' et q'avant on avait '/'
				}									//on ne fait rien, car l'espace est deja mis 
													//par la fonction en haut
			
				else	//si on a seulement '/', 							
				{	
					if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
					{
									//si on a une espace devant et apres
					}									// '/', on ne fait rien

					else if(ContenuFichier[i-1]==' ')//si on a seulement un espace devant '/'
					{									//on rajout un espace apres '/'
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
					
					}

					else if(ContenuFichier[i+1]==' ')//si on a seulement un espace apres '/'
					{									//on rajoute un espace avant '/'
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
			
					}

					else //sinon on met un espace a doite et a gauche
					{
						pos=i;
						DecalageEtAjoutEspace(ContenuFichier,pos);
						DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
					
					}
				}
			}

			/************************recherche un '('************************/

			else if(ContenuFichier[i]=='(')	//si on rencontre un '('
			{
				if(ContenuFichier[i+1]==' ')//si on a une espace avant '('
				{
				//on ne fait rien
				}
				else			//si on a rien devant '(' on met un espace
				{
					pos=i+1;
					DecalageEtAjoutEspace(ContenuFichier,pos);
				
				}

			}

			/************************recherche un ')'***********************/

			else if(ContenuFichier[i]==')')	//si on rencontre un ')'
			{
				if(ContenuFichier[i-1]==' ')//si on a une espace avant ')'
				{
									//on ne fait rien
				}
				else			//si on a rien devant ')' on met un espace
				{
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
				
				}

			}
			/************************recherche un ','********************/

			else if(ContenuFichier[i]==',')
			{	
				if(ContenuFichier[i-1]==' ' && ContenuFichier[i+1]==' ')
				{	
				
				}									

				else if(ContenuFichier[i-1]==' ')
				{						
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos=pos+1);
				
				}

				else if(ContenuFichier[i+1]==' ')
				{	
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
				
				}

				else //sinon on met un espace a doite et a gauche
				{
					pos=i;
					DecalageEtAjoutEspace(ContenuFichier,pos);
					DecalageEtAjoutEspace(ContenuFichier,pos=pos+2);
		
				}

			}

			/*******pour l'ajout d'un entree apres case(1):*****/

			else if(ContenuFichier[i]=='c' && ContenuFichier[i+1]=='a' && ContenuFichier[i+2]=='s' && ContenuFichier[i+3]=='e')
			{
				p=i+3;
				do
				{
					p++;

					if(ContenuFichier[p] == ':')
					{
						pos=p+1;
						DecalageEtAjoutEntree(ContenuFichier,pos);
					}

				}while(ContenuFichier[p] != ':');

			}

			

			/************************recherche un '{'*******************/

			else if(ContenuFichier[i]=='{')
			{	
					if(ContenuFichier[i-1]=='\n' && ContenuFichier[i+1]=='\n')
					{
					
						//si on a un entree devant et apres
						// '{', on ne fait rien
					}

					else if(ContenuFichier[i-1]=='\n')//si on a seulement un entree devant '='
					{									//on rajoute un entree apres '='
						pos=i+1;
						DecalageEtAjoutEntree(ContenuFichier,pos);
					
					}

					else if(ContenuFichier[i+1]=='\n' )//si on a seulement un entree apres '='
					{									//on rajoute un entree avant '='
						pos=i-1;
						DecalageEtAjoutEntree(ContenuFichier,pos);
					
					}

					else
					{//sinon on met un entree a doite et a gauche
						pos=i;

						DecalageEtAjoutEntree(ContenuFichier,pos);
						DecalageEtAjoutEntree(ContenuFichier,pos=pos+2);
					
					}

			}

			/************************recherche un '}'***********/

			else if(ContenuFichier[i]=='}')
			{	
					if(ContenuFichier[i-1]=='\n' && ContenuFichier[i+1]=='\n')
					{
					
						//si on a un entree devant et apres
						// '{', on ne fait rien
					}

					else if(ContenuFichier[i-1]=='\n')//si on a seulement un entree devant '='
					{									//on rajout un entree apres '='
						pos=i+1;
						DecalageEtAjoutEntree(ContenuFichier,pos);
					
					}

					else if(ContenuFichier[i+1]=='\n' )//si on a seulement un entree apres '='
					{									//on rajoute un entree avant '='
						pos=i-1;
						DecalageEtAjoutEntree(ContenuFichier,pos);

					
					}

					else //sinon on met un entree a doite et a gauche
					{
						pos=i;

						DecalageEtAjoutEntree(ContenuFichier,pos);
						DecalageEtAjoutEntree(ContenuFichier,pos=pos+2);
					
					}
			}

			//pour mettre un 'entree' avant le #include<iostream.h>,...

			else if(ContenuFichier[i]=='#' && ContenuFichier[i+1]=='i')
			{

				if(ContenuFichier[i-1]=='\n')
				{
				}

				else
				{
					pos=i;
					DecalageEtAjoutEntree(ContenuFichier,pos);
				}
			}

			i++;

		}while(ContenuFichier[i] != 0x00);

/******** ajout de tabulation et suppression de entree dans une boucle FOR******/

	m=0;
	do
	{	// dans la boucle FOR, on retire les 'entree' apres les ';'
		//que l'on avait ajouter precedemment
		if(ContenuFichier[m]=='f' && ContenuFichier[m+1]=='o' && ContenuFichier[m+2]=='r')
		{
			n=m+3;
			do
			{
				if(ContenuFichier[n] == ';')
				{
					pos=n+1;
					Decalage(ContenuFichier,pos);
				}
				n++;

			}while(ContenuFichier[n] != ')');//tant que l'on rencontre pas la fin du ')' du FOR
		}

						//pour l'ajout de tabulations
		else if(ContenuFichier[m]=='\n')
		{

			if(ContenuFichier[m+1]=='{')
			{
					
				if(l==1)
				{
				}
				else
				{
					k=0;
					do
					{
						pos=m+1;
						DecalageEtAjoutTabulation(ContenuFichier,pos);
						k++;
					}while(k < (l-1));
				}
				l++;//pour qu'il y a une tabulation en plus dans la prochaine ligne
			}
	
			else if(ContenuFichier[m+1]=='}')
			{
					
				k=0;
				l--;
				if(l==1)
				{
				}
				else
				{
					k=0;
					do
					{
						pos=m+1;
						DecalageEtAjoutTabulation(ContenuFichier,pos);
						k++;
					}while(k < (l-1));
				}
			
			}

			else
			{
				if(l==1)
				{
				}

				else
				{
					k=0;
					do
					{
						pos=m+1;
						DecalageEtAjoutTabulation(ContenuFichier,pos);
						k++;
					}while(k < (l-1));
				}
			}

		}

		m++;

	}while(ContenuFichier[m] != 0x00);

	do
	{

		if(ContenuFichier[z]=='c' && ContenuFichier[z+1]=='a' && ContenuFichier[z+2]=='s' && ContenuFichier[z+3]=='e')
		{
			h=z+4;
			do
			{
				if(ContenuFichier[h] == '\n')
				{
					pos=h+1;
					DecalageEtAjoutTabulation(ContenuFichier,pos);
				}

				h++;

			}while(ContenuFichier[h] != 'b' || ContenuFichier[h+1] != 'r' || 
			ContenuFichier[h+2] != 'e' || ContenuFichier[h+3] != 'a' || ContenuFichier[h+4] != 'k');

		}

		z++;

	}while(ContenuFichier[z] != 0x00);

	return z;
}

Conclusion :


comme je l'ai dit, on peut le modifier, l'interface est en franvais, c'est surtout bien expliquer avec des comentaires!!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

slashbeastleo93
Messages postés
4
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
17 mai 2003
-
alors que pensez vous de mon programme ?
trinitacs
Messages postés
249
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
7 août 2003
1 -
Il est possible d'améliorer ton code.

Tout d'abord je le trouve très long pour ce qu'il fait.

Tu n'est pas obligé d'indiqué la taille d'un tableau à passer à une fonction si il n'a qu'une dimension.

Tes fonctions sont beaucoup trop longues.

Tu devrai mettre de l'ordre avec des objet.

Si tu utilises la classe string (basic_string) ton code se grandement plus performant (rapidité + robuste)

Tu lit le fichier d'une mauvaise manière. Lire octect par octect c'est un peu bourrin. Met le pointeur à la fin du fichier, demande la position de celui-ci et tu auras la taille du fichier en octect. Ensuite tu alloue un tableau dynamiquement au lieu de la faire d'une manière statique qui n'est pas très fiable. Si le fichier fait plus de 1 000 000 d'octetc il y aura un e erreur à l'éxécution.
Pour résoudre ce problème allou le dynamiquement en fonction de la taille.
Et enfin pour le lire utilise la fonction in.read( taille );

Voici un code qui résume ce que j'ai dis pour lire le fichier:
---------------
// read a file into memory
#include
#include <fstream>
using namespace std;

int main () {
int length;
char * buffer;

ifstream is;
is.open ("test.txt", ios::binary );

// get length of file:
is.seekg (0, ios::end);
length = is.tellg();
is.seekg (0, ios::beg);

// allocate memory:
buffer = new char [length];

// read data as a block:
is.read (buffer,length);

is.close();

cout.write (buffer,length);

return 0;
}
---------------
tiré de cplusplus.com dans la doc de ifstream.
slashbeastleo
Messages postés
7
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
26 mars 2004
-
ok, merci, mais c'est a vous de le modifier, car je suis pas trop experimenter....
lol

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.