begin process at 2012 05 27 16:39:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > GESTION DE FICHIER ET DOSSIER + AUTRES

GESTION DE FICHIER ET DOSSIER + AUTRES


 Information sur la source

Note :
Aucune note
Catégorie :Base de données Classé sous :os, gestion, fichier, dossier Niveau :Débutant Date de création :01/03/2011 Date de mise à jour :01/03/2011 14:12:57 Vu :3 228

Auteur : shinji63

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Petit code qui permet de gérer les fichiers et dossiers ainsi que d'autres fonctions.
Je suis débutant, il manque beaucoup de chose mais cela donnera une base pour ceux qui veulent étudier le fonctionnement d'un os. Bien sur quand je parle os il faut relativiser ^^.

Source

  • #include <string.h>
  • #include <string>
  • #include <time.h>
  • #include "types.h"
  • using namespace std;
  • void initArrayRecord(rootDirectory arrayRecord[1024]);
  • void initArrayRecord(dataSection arrayRecord[1024]);
  • char text [512];
  • int numéro = 99;
  • int incrementation = 0;
  • int kb ;
  • void main()
  • {
  • // la limite de compilation impose une taille raisonnées dans la limite des tableaux
  • rootDirectory rootDirectoryArrayRecord[1024]; // tableau enregistrement de rootDirectory
  • dataSection dataSectionArrayRecord[1024]; // // tableau enregistrement de dataSection
  • char commande[255]; // commande passée
  • // initialisation des structures
  • initArrayRecord(rootDirectoryArrayRecord);
  • while ( strcmp(commande,"exit") != 0 )
  • {
  • printf("? >");
  • gets(commande);
  • time_t *h=NULL;
  • time_t t;
  • if (strcmp(commande,"ver") == 0 )
  • {
  • printf("version 0.1 \n");
  • }
  • if (strcmp(commande,"date") == 0 )
  • {
  • int j = 0;
  • char date[255];
  • char realDate[255];
  • char realYear[5];
  • time_t rawtime;
  • t = time ( &rawtime );
  • sprintf(date,"%s",asctime(localtime(&t)));
  • strncpy(realDate,date,10);
  • realDate[10] = '\0';
  • j=0;
  • for (int i =20 ; i <strlen(date)-1; i++)
  • {
  • realYear[j] = date[i];
  • j++;
  • }
  • realYear[j] = '\0';
  • sprintf(realDate,"%s-%s",realDate,realYear);
  • printf("date : %s \n",realDate);
  • }
  • if (strcmp(commande,"time") == 0 )
  • {
  • int j = 0;
  • char date[255];
  • char realHour[255];
  • time_t rawtime;
  • t = time ( &rawtime );
  • sprintf(date,"%s",asctime(localtime(&t)));
  • j=0;
  • for (int i =11 ; i <20; i++) // prototype à vérifier pour les positions
  • {
  • realHour[j] = date[i];
  • j++;
  • }
  • realHour[j] = '\0';
  • printf("heure : %s \n",realHour);
  • }
  • ///////////////////////////creation de fichier
  • if (commande[0] == 'e' && commande[1] == 'd' && commande[2] == 'i' && commande[3] == 't' )
  • {
  • char nom[255];
  • int j = 0;
  • int position;
  • int longueur = strlen(commande);
  • for (int i = 5; i< longueur; i++)
  • {
  • nom[j] = commande[i];
  • j++;
  • }
  • nom[j]='\0';
  • printf("nom fichier %s \n",nom);
  • char extension[4];
  • for (int i = 0; i < strlen(nom); i++)
  • {
  • if ( nom[i] == '.')
  • {
  • position = i;
  • i = 99;
  • }
  • }
  • j= 0;
  • for (int i = position+1; i< strlen(nom); i++)
  • {
  • extension[j] = nom[i];
  • j++;
  • }
  • extension[j]='\0';
  • numéro++;
  • incrementation ++;
  • printf("ext fichier %s \n",extension);
  • rootDirectoryArrayRecord[numéro].rdID = numéro;// identifiant 0 à 99 réservés
  • strcpy (rootDirectoryArrayRecord[numéro].rdName , nom); // ajout de nom
  • strcpy (rootDirectoryArrayRecord[numéro].rdExtension , extension);// extension
  • dataSectionArrayRecord[incrementation].dsID , incrementation; /// ID avec varriable incrementation pour le Fichier
  • rootDirectoryArrayRecord[numéro].rdFirstSecor , incrementation; /// Id avec varriable incrementation pour l'emplacement du contenu
  • rootDirectoryArrayRecord[numéro].rdType = 1;
  • printf("Contenu du fichier : \n");
  • gets(text);
  • strcpy(dataSectionArrayRecord[incrementation].dsData , text); //inserion du contenu dans la section data en recupérant l id
  • kb = strlen(text);
  • rootDirectoryArrayRecord[numéro].rdSize = kb;
  • printf("taille : %d kb\n",kb);
  • //insertion du poid en KB avec le nbr de char
  • if (strcmp (dataSectionArrayRecord[incrementation].dsData , text) ==0)
  • {
  • printf("Enregistrement ok\n");
  • }
  • else
  • {
  • printf(" Error de l'enregistrement\n");
  • }
  • printf("Quelle dossier ?\n");
  • /////////recherche du dossier ///////
  • gets(text);
  • int j1 = 0;
  • for (int i = 0; i< 1024; i++)
  • {
  • if (strcmp(rootDirectoryArrayRecord[i].rdName, text) ==0)
  • {
  • j1=i; //// id du dossier
  • i=1025;
  • printf("dossier trouver \n");
  • printf("Enregistrement total \n");
  • }
  • if (i == 1023)
  • {
  • printf(" Dossier introuvable\n");
  • printf(" Enregistrement partielle \n");
  • }
  • }
  • rootDirectoryArrayRecord[numéro].rdParent = j1; //// Le fichier prend la valeur de l id du dossier dans lequelle on l'ajoute
  • }
  • ///////////////////////////////////////////////////////////////////////////////////
  • ///////////// Création de dossier ////////////////////
  • if (commande[0] == 'm' && commande[1] == 'k' && commande[2] == 'd' && commande[3] == 'i' && commande[4] == 'r')
  • {
  • numéro ++;
  • char nom[255];
  • int j = 0;
  • int position;
  • int longueur = strlen(commande);
  • for (int i = 6; i< longueur; i++)
  • {
  • nom[j] = commande[i];
  • j++;
  • }
  • nom[j]='\0';
  • printf("nom dossier %s \n",nom);
  • rootDirectoryArrayRecord[numéro].rdID = numéro;// id de rootdirectory
  • rootDirectoryArrayRecord[numéro].rdType = 0;
  • strcpy (rootDirectoryArrayRecord[numéro].rdName , nom); /// affectation du nom du dossier
  • if (strcmp (rootDirectoryArrayRecord[numéro].rdName , nom)==0)
  • {
  • printf("Enregistrement ok\n");
  • printf("id = %d\n", numéro);
  • }
  • else
  • {
  • printf(" Error de l'enregistrement");
  • }
  • }
  • ///////////////////// Dir ////////////////////
  • int numero2 =0;
  • int IDdossier;
  • char name [250];
  • char namedossier [250];
  • if (strcmp(commande,"dir") == 0 )
  • {
  • for (int i=99; i< 1024;i++)
  • {
  • rootDirectoryArrayRecord[i].rdScan = 0;
  • }
  • for (int i=99; i< 1024;i++)
  • {
  • if (( rootDirectoryArrayRecord[i].rdScan == 0) && (rootDirectoryArrayRecord[i].rdType == 1 )
  • && (rootDirectoryArrayRecord[i].rdID != 0 )) // si c'est un fichier et qu'il n'a pas ete scan et qu'il a bien un ID
  • {
  • IDdossier = rootDirectoryArrayRecord[i].rdParent; //recupérartion de l'id du dossier
  • strcpy (name , rootDirectoryArrayRecord[IDdossier].rdName);
  • printf ("le nom du dossier est %s \n",name);
  • //scan des fichier ayant le meme nom que l'association IDname
  • for (int y=99; y< 1024;y++)
  • {
  • if (( rootDirectoryArrayRecord[y].rdScan == 0) && (rootDirectoryArrayRecord[y].rdType == 1 )
  • && (rootDirectoryArrayRecord[y].rdID != 0 ) && (rootDirectoryArrayRecord[y].rdParent == IDdossier))
  • {
  • strcpy (namedossier , rootDirectoryArrayRecord[y].rdName);
  • printf (" le nom du fichier est %s \n",namedossier);
  • rootDirectoryArrayRecord[y].rdScan = 1;
  • }
  • }
  • }
  • }
  • }
  • ////////////////////// cat ///////////////////////////
  • if (commande[0] == 'c' && commande[1] == 'a' && commande[2] == 't')
  • {
  • numéro ++;
  • char nom[255];
  • int j = 0;
  • int position;
  • int longueur = strlen(commande);
  • int id;
  • int poid;
  • int iddossier;
  • char nomdossier [250];
  • for (int i = 4; i< longueur; i++)
  • {
  • nom[j] = commande[i];
  • j++;
  • }
  • nom[j]='\0';
  • printf("nom fichier %s \n",nom);
  • for (int i =99; i<1024; i++)
  • {
  • if (strcmp(rootDirectoryArrayRecord[i].rdName, nom) ==0)
  • {
  • id = rootDirectoryArrayRecord[i].rdID;
  • printf("id du fichier est %d\n",id);
  • poid = rootDirectoryArrayRecord[i].rdSize;
  • printf("le poid du fichier est %d kb\n",poid);
  • iddossier = rootDirectoryArrayRecord[i].rdParent;
  • strcpy(nomdossier , rootDirectoryArrayRecord[iddossier].rdName);
  • printf("Il est dans le dossier %s\n",nomdossier);
  • }
  • }
  • }
  • ////////////////////////////// defrag ////////////////////////////:
  • if (strcmp(commande,"defrag") == 0 )
  • {
  • for (int i = 98; i < 1024;i++)
  • {
  • if (strcmp (rootDirectoryArrayRecord[i].rdName , "")==0)
  • {
  • char name2 [250];
  • char extens [250];
  • int sector; // Emplacement du contenu
  • int type;
  • int size;
  • int id;
  • int parent;
  • int inc =0;
  • int j=0;
  • j = i;
  • while ( strcmp (rootDirectoryArrayRecord[j].rdName , "")==0) // Nombre de place vide aprés l'id
  • {
  • j++;
  • }
  • if ( rootDirectoryArrayRecord[j].rdType == 1) // Travail sur les fichier
  • {
  • ///sauvegardes des valeurs
  • strcpy (name2 , rootDirectoryArrayRecord[j].rdName);
  • strcpy (extens , rootDirectoryArrayRecord[j].rdExtension);
  • sector = rootDirectoryArrayRecord[j].rdFirstSecor;
  • type = rootDirectoryArrayRecord[j].rdType;
  • size = rootDirectoryArrayRecord[j].rdSize;
  • parent = rootDirectoryArrayRecord[j].rdParent;
  • ///suppresion des donnée
  • rootDirectoryArrayRecord[j].rdID = 0;
  • strcpy(rootDirectoryArrayRecord[j].rdName,"");
  • strcpy(rootDirectoryArrayRecord[j].rdExtension,"");
  • rootDirectoryArrayRecord[j].rdType = 2;
  • rootDirectoryArrayRecord[j].rdSize = 0;
  • rootDirectoryArrayRecord[j].rdTime = 0;
  • rootDirectoryArrayRecord[j].rdDate = 0;
  • rootDirectoryArrayRecord[j].rdFirstSecor = 0;
  • rootDirectoryArrayRecord[j].rdParent = 0;
  • rootDirectoryArrayRecord[j].rdAttrib = 0;
  • /// réatribution des données
  • rootDirectoryArrayRecord[i].rdID = i;
  • strcpy (rootDirectoryArrayRecord[i].rdName , name2);
  • strcpy (rootDirectoryArrayRecord[i].rdExtension , extens);
  • rootDirectoryArrayRecord[i].rdFirstSecor = sector;
  • rootDirectoryArrayRecord[i].rdType = type;
  • rootDirectoryArrayRecord[i].rdSize = size;
  • rootDirectoryArrayRecord[i].rdParent = parent;
  • printf(" le Fichier %s ayant l'id %d a ete déplacer a l'id %d\n",name2,j,i);
  • }
  • if ( rootDirectoryArrayRecord[j].rdType == 0) // travail sur les dossier
  • {
  • // sauvegarde des données
  • id = rootDirectoryArrayRecord[j].rdID;
  • strcpy (name2 , rootDirectoryArrayRecord[j].rdName);
  • type = rootDirectoryArrayRecord[j].rdType;
  • // suppression des données
  • strcpy(rootDirectoryArrayRecord[j].rdName,"");
  • type = rootDirectoryArrayRecord[j].rdType;
  • //réatribution des données
  • rootDirectoryArrayRecord[i].rdID = i;
  • strcpy (rootDirectoryArrayRecord[i].rdName , name2);
  • rootDirectoryArrayRecord[i].rdType = type;
  • printf(" le Dossier %s ayant l'id %d a ete déplacer a l'id %d\n",name2,j,i);
  • for (j = 99; j<1024; j++)
  • {
  • if (rootDirectoryArrayRecord[j].rdParent = id)
  • {
  • rootDirectoryArrayRecord[j].rdParent = i;
  • }
  • }
  • }
  • }
  • if (strcmp (dataSectionArrayRecord[i].dsData,"")) ////travail sur les données
  • {
  • int j;
  • int id;
  • char contenu2[512];
  • j = i;
  • while (strcmp (dataSectionArrayRecord[j].dsData ,"")) // Nombre de place vide aprés l'id
  • {
  • j++;
  • }
  • id = dataSectionArrayRecord[j].dsID;
  • strcpy (contenu2 , dataSectionArrayRecord[j].dsData);
  • //suppresion des données
  • dataSectionArrayRecord[i].dsID = 0;
  • strcpy(dataSectionArrayRecord[i].dsData,"");
  • //reatribution des données
  • dataSectionArrayRecord[i].dsID = i;
  • strcpy (dataSectionArrayRecord[i].dsData , contenu2);
  • for(j=99; j<1024;j++)
  • {
  • if (rootDirectoryArrayRecord[j].rdFirstSecor == id)
  • {
  • rootDirectoryArrayRecord[j].rdFirstSecor = i;
  • }
  • }
  • }
  • }
  • }
  • /////////////////////delf///////////////////
  • if (commande[0] == 'd' && commande[1] == 'e' && commande[2] == 'l' && commande[3] == 'f' )
  • {
  • char nom[255];
  • int sector;
  • int j = 0;
  • int position;
  • int longueur = strlen(commande);
  • for (int i = 5; i< longueur; i++)
  • {
  • nom[j] = commande[i];
  • j++;
  • }
  • nom[j]='\0';
  • for (j =99 ; j<1024; j++)
  • {
  • if ((strcmp (rootDirectoryArrayRecord[j].rdName , nom)==0) && (rootDirectoryArrayRecord[j].rdType == 1))
  • {
  • sector = rootDirectoryArrayRecord[j].rdFirstSecor;
  • rootDirectoryArrayRecord[j].rdID = 0;
  • strcpy(rootDirectoryArrayRecord[j].rdName,"");
  • strcpy(rootDirectoryArrayRecord[j].rdExtension,"");
  • rootDirectoryArrayRecord[j].rdType = 2;
  • rootDirectoryArrayRecord[j].rdSize = 0;
  • rootDirectoryArrayRecord[j].rdTime = 0;
  • rootDirectoryArrayRecord[j].rdDate = 0;
  • rootDirectoryArrayRecord[j].rdFirstSecor = 0;
  • rootDirectoryArrayRecord[j].rdParent = 0;
  • rootDirectoryArrayRecord[j].rdAttrib = 0;
  • for (int h =99; h<1024; h++)
  • {
  • if (dataSectionArrayRecord[h].dsID == sector)
  • {
  • dataSectionArrayRecord[h].dsID = 0;
  • strcpy(dataSectionArrayRecord[h].dsData,"");
  • }
  • }
  • printf("effacement ok \n");
  • }
  • }
  • }
  • ////////////////deld/////////////////////////////
  • if (commande[0] == 'd' && commande[1] == 'e' && commande[2] == 'l' && commande[3] == 'd' )
  • {
  • char nom[255];
  • int j = 0;
  • int position;
  • int longueur = strlen(commande);
  • int type;
  • for (int i = 5; i< longueur; i++)
  • {
  • nom[j] = commande[i];
  • j++;
  • }
  • nom[j]='\0';
  • for (j =99 ; j<1024; j++)
  • {
  • if ((strcmp (rootDirectoryArrayRecord[j].rdName , nom)==0) && (rootDirectoryArrayRecord[j].rdType == 0))
  • {
  • strcpy(rootDirectoryArrayRecord[j].rdName,"");
  • type = rootDirectoryArrayRecord[j].rdType;
  • ///////////////////////////////////////////////////fdvf
  • printf("effacement ok \n");
  • }
  • }
  • }
  • //////////////////////////////////////////////////////
  • if (strcmp(commande,"drspace") == 0 )
  • {
  • if (rootDirectoryArrayRecord[0].rdType == ' ')
  • {
  • printf("Drive empty, 100%% free \n");
  • }
  • }
  • if (strcmp(commande,"?") == 0 || strcmp(commande,"help") == 0 || strcmp(commande,"man") == 0)
  • {
  • printf("VER \n DATE \n TIME \n DIR \n CAT \n EDIT nomfichier.extension Le nom est limité à 11 caractères, l'extension à 4 caractères \n DEL \n MKDIR \n RMDIR \n DEFRAG \n REPACK \n CP \n ECHO \n DRSPACE \n FORMAT \n CD \n CLS \n help : manuel \n ? : manuel \n man : manuel \n");
  • }
  • }
  • }
  • void initArrayRecord(rootDirectory arrayRecord[1024])
  • {
  • for (int i = 0 ; i < 1024; i++)
  • {
  • arrayRecord[i].rdID = 0;// identifiant 0 à 99 réservés
  • strcpy(arrayRecord[i].rdName,"");
  • strcpy(arrayRecord[i].rdExtension,"");
  • arrayRecord[i].rdType = 2;
  • arrayRecord[i].rdSize = 0;
  • arrayRecord[i].rdTime = 0;
  • arrayRecord[i].rdDate = 0;
  • arrayRecord[i].rdFirstSecor = 0;
  • arrayRecord[i].rdParent = 0;
  • arrayRecord[i].rdAttrib = 0;
  • arrayRecord[i].rdScan = 0;
  • }
  • }
  • void initArrayRecord(dataSection arrayRecord[1024])
  • {
  • for (int i = 0 ; i < 1024; i++)
  • {
  • arrayRecord[i].dsID = 0;
  • strcpy(arrayRecord[i].dsData,"");
  • arrayRecord[i].dsPrev = 0;
  • arrayRecord[i].dsNext = 0;
  • }
  • }
#include <string.h>
#include <string>
#include <time.h>
#include "types.h"

using namespace std;

void initArrayRecord(rootDirectory  arrayRecord[1024]);
void initArrayRecord(dataSection arrayRecord[1024]);
char text [512];
int numéro = 99;
int incrementation = 0;
int kb ;
void main()
{

	// la limite de compilation impose une taille raisonnées dans la limite des tableaux
	rootDirectory rootDirectoryArrayRecord[1024]; // tableau enregistrement de rootDirectory
	dataSection dataSectionArrayRecord[1024]; // // tableau enregistrement de dataSection

	char commande[255]; // commande passée

	// initialisation des structures
	initArrayRecord(rootDirectoryArrayRecord);
	while ( strcmp(commande,"exit") != 0 )
	{
		printf("? >");
		gets(commande);
		time_t *h=NULL;
		time_t t;
		if (strcmp(commande,"ver") == 0 )
		{
			printf("version 0.1 \n");

		}
		if (strcmp(commande,"date") == 0 )
		{

			int j = 0;
			char date[255];
			char realDate[255];
			char realYear[5];
			time_t rawtime;
			t = time ( &rawtime );
			sprintf(date,"%s",asctime(localtime(&t)));
			strncpy(realDate,date,10);
			realDate[10] = '\0';
			j=0;
			for (int i  =20 ; i <strlen(date)-1; i++)
			{
				realYear[j] = date[i];
				j++;
			}
			realYear[j] = '\0';
			sprintf(realDate,"%s-%s",realDate,realYear);
			printf("date : %s \n",realDate);

		}
		if (strcmp(commande,"time") == 0 )
		{

			int j = 0;
			char date[255];
			char realHour[255];

			time_t rawtime;
			t = time ( &rawtime );
			sprintf(date,"%s",asctime(localtime(&t)));
			j=0;
			for (int i =11 ; i <20; i++) // prototype  à vérifier pour les positions
			{
				realHour[j] = date[i];
				j++;
			}
			realHour[j] = '\0';
			printf("heure : %s \n",realHour);

		}

		///////////////////////////creation de fichier

		if (commande[0] == 'e' && commande[1] == 'd' && commande[2] == 'i' && commande[3] == 't' )
		{

			char nom[255];
			int j = 0;
			int position;
			int longueur = strlen(commande);
			for (int i = 5; i< longueur; i++)
			{
				nom[j] = commande[i];
				j++;
			}
			nom[j]='\0';
			printf("nom fichier %s \n",nom);
			char extension[4];
			for (int i = 0; i < strlen(nom); i++)
			{
				if ( nom[i] == '.')
				{
					position = i;
					i = 99;
				}
			}
			j= 0;
			for (int i = position+1; i< strlen(nom); i++)
			{
				extension[j] = nom[i];
				j++;
			}
			extension[j]='\0';
			numéro++;
			incrementation ++;
			printf("ext fichier %s \n",extension);
			rootDirectoryArrayRecord[numéro].rdID = numéro;// identifiant 0 à 99 réservés
			strcpy (rootDirectoryArrayRecord[numéro].rdName , nom); // ajout de nom
			strcpy (rootDirectoryArrayRecord[numéro].rdExtension , extension);// extension
			dataSectionArrayRecord[incrementation].dsID , incrementation; /// ID avec varriable incrementation pour le Fichier
			rootDirectoryArrayRecord[numéro].rdFirstSecor , incrementation; /// Id avec varriable incrementation pour l'emplacement du contenu
			rootDirectoryArrayRecord[numéro].rdType = 1;
			printf("Contenu du fichier : \n"); 
			gets(text);
			strcpy(dataSectionArrayRecord[incrementation].dsData , text);  //inserion du contenu dans la section data en recupérant l id
			kb = strlen(text);
			rootDirectoryArrayRecord[numéro].rdSize = kb;
			printf("taille : %d kb\n",kb);
			//insertion du poid en KB avec le nbr de char
			if (strcmp (dataSectionArrayRecord[incrementation].dsData , text) ==0)
			{
				printf("Enregistrement ok\n");
			}
			else  
			{
				printf(" Error de l'enregistrement\n");
			}
			printf("Quelle dossier ?\n");
			/////////recherche du dossier ///////
			gets(text);
			int j1 = 0;
			for (int i = 0; i< 1024; i++)
			{ 
				if (strcmp(rootDirectoryArrayRecord[i].rdName, text) ==0)
				{
					j1=i; //// id du dossier 
					i=1025;
					printf("dossier trouver \n");
					printf("Enregistrement total \n");
				}
				if (i == 1023)
				{
					printf(" Dossier introuvable\n");
					printf(" Enregistrement partielle \n");
				}
			}

			rootDirectoryArrayRecord[numéro].rdParent = j1; //// Le fichier prend la valeur de l id du dossier dans lequelle on l'ajoute

		}

		///////////////////////////////////////////////////////////////////////////////////
		/////////////  Création de dossier ////////////////////


		if (commande[0] == 'm' && commande[1] == 'k' && commande[2] == 'd' && commande[3] == 'i' && commande[4] == 'r')
		{
			numéro ++;
			char nom[255];
			int j = 0;
			int position;
			int longueur = strlen(commande);
			for (int i = 6; i< longueur; i++)
			{
				nom[j] = commande[i];
				j++;
			}
			nom[j]='\0';
			printf("nom dossier %s \n",nom);
			rootDirectoryArrayRecord[numéro].rdID = numéro;// id de rootdirectory
			rootDirectoryArrayRecord[numéro].rdType = 0;
			strcpy (rootDirectoryArrayRecord[numéro].rdName , nom);  /// affectation du nom du dossier
			if (strcmp (rootDirectoryArrayRecord[numéro].rdName , nom)==0)
			{
				printf("Enregistrement ok\n");
				printf("id = %d\n", numéro);
			}
			else  
			{
				printf(" Error de l'enregistrement");
			}

		}
		///////////////////// Dir ////////////////////
		int numero2 =0;
		int IDdossier;
		char name [250];
		char namedossier [250];
		if (strcmp(commande,"dir") == 0 )
		{

			for (int i=99; i< 1024;i++)
			{
				rootDirectoryArrayRecord[i].rdScan = 0;

			}
			for (int i=99; i< 1024;i++)
			{
				if (( rootDirectoryArrayRecord[i].rdScan == 0) && (rootDirectoryArrayRecord[i].rdType == 1 )
					&& (rootDirectoryArrayRecord[i].rdID != 0 )) // si c'est un fichier et qu'il n'a pas ete scan et qu'il a bien un ID

				{
					IDdossier = rootDirectoryArrayRecord[i].rdParent; //recupérartion de l'id du dossier
					strcpy (name , rootDirectoryArrayRecord[IDdossier].rdName);
					printf ("le nom du dossier est %s \n",name);
					//scan des fichier ayant le meme nom que l'association IDname
					for (int y=99; y< 1024;y++)
					{
						if (( rootDirectoryArrayRecord[y].rdScan == 0) && (rootDirectoryArrayRecord[y].rdType == 1 )
							&& (rootDirectoryArrayRecord[y].rdID != 0 ) && (rootDirectoryArrayRecord[y].rdParent == IDdossier))
						{
							strcpy (namedossier , rootDirectoryArrayRecord[y].rdName);
							printf ("   le nom du fichier est %s \n",namedossier);
							rootDirectoryArrayRecord[y].rdScan = 1;
						}
					}


				}


			} 	

		}
		////////////////////// cat ///////////////////////////
		if (commande[0] == 'c' && commande[1] == 'a' && commande[2] == 't')
		{
			numéro ++;
			char nom[255];
			int j = 0;
			int position;
			int longueur = strlen(commande);
			int id;
			int poid;
			int iddossier;
			char nomdossier [250];
			for (int i = 4; i< longueur; i++)
			{
				nom[j] = commande[i];
				j++;
			}
			nom[j]='\0';
			printf("nom fichier %s \n",nom);
			for (int i =99; i<1024; i++)
			{
				if (strcmp(rootDirectoryArrayRecord[i].rdName, nom) ==0)
				{
					id = rootDirectoryArrayRecord[i].rdID;
					printf("id du fichier est %d\n",id);
					poid = rootDirectoryArrayRecord[i].rdSize;
					printf("le poid du fichier est %d kb\n",poid);
					iddossier = rootDirectoryArrayRecord[i].rdParent;
					strcpy(nomdossier , rootDirectoryArrayRecord[iddossier].rdName);
					printf("Il est dans le dossier %s\n",nomdossier);
				}
			}
		}
		////////////////////////////// defrag ////////////////////////////:
		if (strcmp(commande,"defrag") == 0 )


		{
			for (int i = 98; i < 1024;i++)
			{
				if (strcmp (rootDirectoryArrayRecord[i].rdName , "")==0)
				{ 
					char name2 [250];
					char extens [250];
					int sector; // Emplacement du contenu
					int type;
					int size;
					int id;
					int parent;
					int inc =0;
					int j=0;
					j = i;
					while ( strcmp (rootDirectoryArrayRecord[j].rdName , "")==0) // Nombre de place vide aprés l'id 
					{
						j++;
					}
					if ( rootDirectoryArrayRecord[j].rdType == 1) // Travail sur les fichier
					{
						///sauvegardes des valeurs
						strcpy (name2 , rootDirectoryArrayRecord[j].rdName);
						strcpy (extens , rootDirectoryArrayRecord[j].rdExtension);
						sector = rootDirectoryArrayRecord[j].rdFirstSecor;
						type = rootDirectoryArrayRecord[j].rdType;
						size = rootDirectoryArrayRecord[j].rdSize;
						parent = rootDirectoryArrayRecord[j].rdParent;
						///suppresion des donnée
						rootDirectoryArrayRecord[j].rdID  = 0;
						strcpy(rootDirectoryArrayRecord[j].rdName,"");
						strcpy(rootDirectoryArrayRecord[j].rdExtension,"");
						rootDirectoryArrayRecord[j].rdType = 2;
						rootDirectoryArrayRecord[j].rdSize = 0;
						rootDirectoryArrayRecord[j].rdTime = 0;
						rootDirectoryArrayRecord[j].rdDate = 0;
						rootDirectoryArrayRecord[j].rdFirstSecor = 0;
						rootDirectoryArrayRecord[j].rdParent = 0;
						rootDirectoryArrayRecord[j].rdAttrib = 0;
						/// réatribution des données
						rootDirectoryArrayRecord[i].rdID = i;
						strcpy (rootDirectoryArrayRecord[i].rdName , name2);
						strcpy (rootDirectoryArrayRecord[i].rdExtension , extens);
						rootDirectoryArrayRecord[i].rdFirstSecor = sector;
						rootDirectoryArrayRecord[i].rdType = type;
						rootDirectoryArrayRecord[i].rdSize = size;
						rootDirectoryArrayRecord[i].rdParent = parent;
						printf(" le Fichier %s ayant l'id %d a ete déplacer a l'id %d\n",name2,j,i);
					}
					if ( rootDirectoryArrayRecord[j].rdType == 0) // travail sur les dossier
					{
						// sauvegarde des données
						id = rootDirectoryArrayRecord[j].rdID;
						strcpy (name2 , rootDirectoryArrayRecord[j].rdName);
						type = rootDirectoryArrayRecord[j].rdType;
						// suppression des données
						strcpy(rootDirectoryArrayRecord[j].rdName,"");
						type = rootDirectoryArrayRecord[j].rdType;
						//réatribution des données
						rootDirectoryArrayRecord[i].rdID = i;
						strcpy (rootDirectoryArrayRecord[i].rdName , name2);
						rootDirectoryArrayRecord[i].rdType = type;
						printf(" le Dossier %s ayant l'id %d a ete déplacer a l'id %d\n",name2,j,i);
						for (j = 99; j<1024; j++)
						{
							if (rootDirectoryArrayRecord[j].rdParent = id)
							{
								rootDirectoryArrayRecord[j].rdParent = i;
							}
						}
					}

				}
				if (strcmp (dataSectionArrayRecord[i].dsData,"")) ////travail sur les données
				{
					int j;
					int id;
					char contenu2[512];
					j = i;
					while (strcmp (dataSectionArrayRecord[j].dsData ,"")) // Nombre de place vide aprés l'id 
					{
						j++;
					}
					id = dataSectionArrayRecord[j].dsID;
					strcpy (contenu2 , dataSectionArrayRecord[j].dsData);
					//suppresion des données
					dataSectionArrayRecord[i].dsID = 0;
					strcpy(dataSectionArrayRecord[i].dsData,"");
					//reatribution des données
					dataSectionArrayRecord[i].dsID = i;
					strcpy (dataSectionArrayRecord[i].dsData , contenu2);
					for(j=99; j<1024;j++)
					{
						if (rootDirectoryArrayRecord[j].rdFirstSecor == id)
						{
							rootDirectoryArrayRecord[j].rdFirstSecor = i;
						}
					}
				}
			}
		}
		/////////////////////delf///////////////////
		if (commande[0] == 'd' && commande[1] == 'e' && commande[2] == 'l' && commande[3] == 'f' )
		{

			char nom[255];
			int sector;
			int j = 0;
			int position;
			int longueur = strlen(commande);
			for (int i = 5; i< longueur; i++)
			{
				nom[j] = commande[i];
				j++;
			}
			nom[j]='\0';
			for (j =99 ; j<1024; j++)
			{
				if ((strcmp (rootDirectoryArrayRecord[j].rdName , nom)==0) && (rootDirectoryArrayRecord[j].rdType == 1))
				{
					sector = rootDirectoryArrayRecord[j].rdFirstSecor;
					rootDirectoryArrayRecord[j].rdID  = 0;
					strcpy(rootDirectoryArrayRecord[j].rdName,"");
					strcpy(rootDirectoryArrayRecord[j].rdExtension,"");
					rootDirectoryArrayRecord[j].rdType = 2;
					rootDirectoryArrayRecord[j].rdSize = 0;
					rootDirectoryArrayRecord[j].rdTime = 0;
					rootDirectoryArrayRecord[j].rdDate = 0;
					rootDirectoryArrayRecord[j].rdFirstSecor = 0;
					rootDirectoryArrayRecord[j].rdParent = 0;
					rootDirectoryArrayRecord[j].rdAttrib = 0;
					for (int h =99; h<1024; h++)
					{
						if (dataSectionArrayRecord[h].dsID == sector)
						{
							dataSectionArrayRecord[h].dsID = 0;
							strcpy(dataSectionArrayRecord[h].dsData,"");
						}
					}

					printf("effacement ok \n");
				}

			}

		}
		////////////////deld/////////////////////////////
		if (commande[0] == 'd' && commande[1] == 'e' && commande[2] == 'l' && commande[3] == 'd' )
		{

			char nom[255];
			int j = 0;
			int position;
			int longueur = strlen(commande);
			int type;
			for (int i = 5; i< longueur; i++)
			{
				nom[j] = commande[i];
				j++;
			}
			nom[j]='\0';
			for (j =99 ; j<1024; j++)
			{
				if ((strcmp (rootDirectoryArrayRecord[j].rdName , nom)==0) && (rootDirectoryArrayRecord[j].rdType == 0))
				{

					strcpy(rootDirectoryArrayRecord[j].rdName,"");
					type = rootDirectoryArrayRecord[j].rdType;
					///////////////////////////////////////////////////fdvf
					printf("effacement ok \n");
				}
			}
		}

		//////////////////////////////////////////////////////



	
		if (strcmp(commande,"drspace") == 0 )
		{

			if (rootDirectoryArrayRecord[0].rdType == ' ')
			{
				printf("Drive empty, 100%% free \n");
			}
		}
		if (strcmp(commande,"?") == 0 || strcmp(commande,"help") == 0 || strcmp(commande,"man") == 0)
		{

			printf("VER \n DATE \n TIME \n DIR \n CAT \n EDIT nomfichier.extension Le nom est limité à 11 caractères, l'extension à 4 caractères \n DEL \n MKDIR \n RMDIR \n DEFRAG \n REPACK \n CP \n ECHO \n DRSPACE \n FORMAT \n CD \n CLS \n help : manuel \n ? : manuel \n man : manuel \n");
		}

	}
}

void initArrayRecord(rootDirectory arrayRecord[1024])
{
	for (int i = 0 ; i < 1024; i++)
	{
		arrayRecord[i].rdID  = 0;// identifiant 0 à 99 réservés
		strcpy(arrayRecord[i].rdName,"");
		strcpy(arrayRecord[i].rdExtension,"");
		arrayRecord[i].rdType = 2;
		arrayRecord[i].rdSize = 0;
		arrayRecord[i].rdTime = 0;
		arrayRecord[i].rdDate = 0;
		arrayRecord[i].rdFirstSecor = 0;
		arrayRecord[i].rdParent = 0;
		arrayRecord[i].rdAttrib = 0;
		arrayRecord[i].rdScan = 0;
	}
}
void initArrayRecord(dataSection arrayRecord[1024])
{
	for (int i = 0 ; i < 1024; i++)
	{
		arrayRecord[i].dsID = 0;
		strcpy(arrayRecord[i].dsData,"");
		arrayRecord[i].dsPrev = 0;
		arrayRecord[i].dsNext = 0;
	}
}

 Conclusion

Fait en cour en IG1 à godefroy de bouillon 63000


 Sources de la même categorie

Source avec une capture CONVERTISSEUR par smartties
Source avec Zip CREATION D'UN FICHIER DBF (EN C) par Stanel
Source avec Zip STRUCTURE DES FICHIERS DBF par Stanel
Source avec Zip Source avec une capture GESTION DES ENTREES/ SORTIES AVEC CODEBARRE par YvaddavY
Source avec Zip Source avec une capture QT4 ET MYSQL par lemda

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel
LISTER LES FICHIERS D'UN REPERTOIRE + FILTRES par yvesyves
Source avec Zip PROTEGER UN DOSSIER ET LES FICHIER A L INTERIEUR par f_l_a_s_h_b_a_c_k
Source avec Zip GESTION DES PERSONNEL D'UNE ENTRPRISE EN UTILISANT LES LISTE... par abidou009

Commentaires et avis

Commentaire de shinji63 le 01/03/2011 11:24:07

Dans les bibliothèques il y a un fichier en-tête, enlever le il ne sert a rien.

Commentaire de zm84 le 01/03/2011 13:30:15

slt;

On peut considérer  votre code comme un interpréteur de commandes mais pas un petit OS
Par ce que un OS est composé d'un KERNEL (noyau) qui s'occupe de gérer la mémoire,  les  processus  et les E/S. et un SHELL (interpréteurs de commandes )  ou/et  une interface graphique  pour  gérer les requêtes  de l'utilisateur.

Commentaire de CptPingu le 01/03/2011 14:00:15 administrateur CS

* Main non standard
* Pas de fonction, tout à l'arrache dans le main
* Utilisation d'un compilateur C++ pour faire du C en oubliant des directives propres au C++.
* L'ensemble des chaines en statique (Que se passe-t-il si on met des tailles de chaînes très grande ?)
* Titre de projet trompeur. Ce n'est en rien un OS.
* Des variables globales

Sont toutes les raisons pour lesquelles je ne recommande absolument pas ce code !

Commentaire de shinji63 le 01/03/2011 15:10:38

Sa fait que 6 mois que je code je me doute bien, qu'il y a mieux. Mais ce n'est pas le but, je partage se code qui me semble simple a lire pour que les débutants comme moi puisse comprendre le mécanisme de gestion des fichiers, dossiers et de l'interpréteur de commande.
J'aurais compris que tu critique mon code, si mon niveau n'avais pas été celui d'un débutant.
Cdlt.

Commentaire de CptPingu le 01/03/2011 15:30:24 administrateur CS

> Je partage se code qui me semble simple a lire pour que les débutants comme moi puisse comprendre
Le problème c'est que ça n'aide pas les débutants. La manière dont tu fais les choses n'est pas la bonne (fonction monolithique...)

> J'aurais compris que tu critique mon code, si mon niveau n'avais pas été celui d'un débutant.
Dès le moment où tu postes dans cette section, tu es soumis à la critique, quelque soit ton niveau.

Attention ne pas confondre:
- Le dépot de source: qui consiste à montrer une méthode "propre" de faire quelque chose ou de présenter un projet original (et conséquent).
- Le forum: Montrer son code, dont on sait que la qualité est discutable, dans le but de s'améliorer.

Si tu viens juste de débuter, dans ce cas, poste ton code dans le forum avec comme titre: "Venez critiquer mon code pour que je m'améliore". Quand tu auras progressé, et que tu seras capables de présenter un projet dont le travail est rigoureux, propre, commenté, et rempli de bonnes pratiques, tu comprendras ma remarque. Évidemment, ça demande de l'expérience, donc ce n'est pas pour tout de suite, mais tu verras que ça viendra très vite.

Commentaire de shinji63 le 01/03/2011 15:39:57

Je comprend mieux tes remarque alors !
Je ne connais pas bien le fonctionnement de se site, c'est pour cela. Il faut m'en excuser.
++

Commentaire de sidali22 le 03/03/2012 18:20:08

excellent travail comme debutant,je souhaite progression et continuité merci.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

MultiThread et gestion fichier [ par bullman2 ] Le but du jeu est de comprendre pourquoi le fclose renvoi des fois (-1) quand on a une gestion Multitrhead. Cela me pause un reèl problème pour la ges gestion des erreurs [ par golum ] Voila en grosif ((fic=fopen(chemfic,"rb"))==NULL){printf("Impossible d'ouvrir le fichier %s \n",chemfic);je voulait savoir s'il était possible et comm scanner un dossier??turboC++ [ par idk ] J'aimerai scanner un dossier, et mettre les noms de fichier en string!ex: dans un dossier, il y a des fichier wad, tar.wad, tir.wadEt je veux, sous fo Probleme de gestion de fichier et gestion de l ehrue en C [ par croft ] Mr.croftG un probleme avec un fichier texte contenant un mot sur chaque ligne .Il me faudrait un code qui pourrrait me ressortir aleatoirment un mot d gestion de fichier en C++ [ par croftlou ] Bonjour je suis debutant en C++, je desire faire un petit projet en C+++, pour gere des des fichiers en lecture et en ecriture.Pour cela ej voudrai cr repertoire, dossier, fichier et disc dur ... [ par zinotron ] je souhaite devellopper un prog ki soit capable de me donner le meme resultat que la commande tree (MS-DOS) mais qui soit portable (cad sans findnextf Gestion de flux [ par djfab ] Bonjour,J'ai une petite question à propos des fluxJ'inclu fstream.h, je crée un objet fic, je fais fic.open("fichier.dat", ios:in)Et là, en fait, bah, Choisir un dossier et pas un fichier [ par MrEddy ] Salut,Je recherche comment pouvoir selectionner un dossier. J'ai essayer l'api GetOpenFileName, cependant avec celle ci, je n'arrive pas à selectionne gestion de fichier [ par franc015 ] salut !!!voila je débute et je dois faire un prog. je dispose d'un fichier texte ( en fait une liste de fichier avec des retours chariot entre chaque differencier fichier/dossier [ par glipper ] Bonjour,je voudrais juste savoir quelle fonction utiliser pour faire la difference entre un fichier et un dossier... j'ai essayé d'utiliser la fonctio


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales