¡Puntuaciones altas en programación C++! Necesito urgentemente ayuda de un experto sobre cómo crear, mover y eliminar archivos y directorios en el sistema operativo.
#include
#include
#include
# define NULL 0
typedef struct UFD
{ char filename[20];
atributo char;
int longth;
int dirección;
estructura UFD *next;
}*LUFD;
typedef estructura MFD
{ nombre de char [20];
struct MFD * siguiente;
struct UFD * go;
}*LMFD;
typedef struct UOF
{ nombre de archivo char[20];
atributo char;
int longth;
estado char;
int lectura;
int escritura;
estructura UOF *siguiente;
}*LUOF;
LMFD headM,leadM; p> p>
LUFD headU,leadU;
LUOF headO,leadO;
int s=0;
char com[50];
void print()
{int i;
LUFD P;
LUOF M;
P= (LUFD )malloc(tamaño de(UFD));
M=(LUOF)malloc(tamaño de(UOF));
P=cabezaU;M=cabezaO;
printf("\t\t\tUFD Table\n");
for(i=0;i<55;i++) printf("=");
printf ("\n");
printf(" Nombre de archivo Atributo Longitud de archivo Dirección\n");
while(P!=NULL)
{ printf( "%10s\t%4c%\t%11d\t%12d\n",P->nombre de archivo,P->atributo,P->longitud,P->dirección);
P= P->siguiente;}
for(i=0;i<55;i++) printf("=");
printf("\n\n") ;
printf("\t\t\t Tabla UOF\n");
for(i=0;i<75;i++) printf("=");
p>
printf("\n");
printf(" Atributo NombreDeArchivo
Estado de duración del archivo Lectura y escritura\n");
while(M!=NULL)
{printf("%10s\t%4c\t%11d%13c%13d%10d \n",M->nombre de archivo,M->atributo,M->longitud,M->estado,M->lectura,M->escritura);
M=M->siguiente;}
for(i=0;i<75;i++) printf("=");
printf("\n");
}
void init()
{ int i=0;
char*j="system.c";
if(( leadU=headU=(LUFD)malloc(sizeof(struct UFD)))==NULL)
{
printf("error de ensamblaje de headU.\n");
return;
}
if((leadO=headO=(LUOF)malloc(sizeof(struct UOF)))==NULL)
{
printf("error de ensamblaje de headO.\n");
return;
}
strcpy(headU-> nombre de archivo,j);
headU->attribute='*';
headU->longth=0;
headU->dirección=(int) headU;
strcpy(headO->nombre de archivo,j);
headO->atributo='*';
headO->longth=0;
headO->estado='*';
headO->read=(int)headO;
headO->write=(int)headO;
leadU->next=NULL;
leadO->next=NULL;
}
void MFDinit()
{int i=0;
char *f="sistema";
LMFD G;
if((leadM=headM=(LMFD )malloc(sizeof(struct MFD)))==NULL)
{
printf("error de ensamblaje de headM.\n");
return;
}
G=(LMFD)malloc(sizeof(MFD));
G=headM;
strcpy(headM- >nombre,f);
headM->go=headU;
leadM->next=NULL;
printf("\n");
printf("Inicie el sistema de administrador de archivos.\n\n");
printf("\tMFD Tabla\n");
for(i=0;i<28;i++) printf("=");
printf("\n");
printf(" Nombre de usuario Dirección de archivo\n");
while(G!=NULL)
{ printf("%8s\t%4d\n",G ->nombre,G->ir);
G=G->siguiente;}
for(i=0;i<28;i++) printf("=") ;
printf("\n\n");
print();
}
void SNEW() p>
{
char t;
int i=0;
LMFD N,G;
G=N =(LMFD)malloc(sizeof(MFD));
G=headM;
printf("\nIngrese el nuevo nombre de usuario: ");
getchar ();
while(1)
{ scanf("%c",&t);
if(t=='\n')
{
N->nombre[i]='\0';
descanso;
}
N->nombre[i]=t;
i++;
}
líderM->siguiente=N;
líderM =N;
N->next=NULL;
N->go=leadU->siguiente;
printf("\n\tNUEVA tabla MFD \n");
for(i=0;i<28;i++) printf("=");
printf("\n");
printf(" Nombre de usuario Dirección de archivo\n");
while(G!=NULL)
{ printf("%8s\t%4d\n",G- >nombre,G->ir);
G=G->siguiente }
for(i=0;i<28;i++) printf("=");
printf("\n\n");
}
void create()
{ nombre de archivo char[20]= {'\0'};
int longth=0;
atributo char;
LMFD T;
LUFD N;
LUOF S;
int i;
T=(LMFD)malloc(tamañode(MFD));
N=(LUFD )malloc(tamañode(UFD));
S=(LUOF)mallo
c(sizeof(UOF));
T=headM;
for(i=0,s+=1;s<50;s++,i++)
{
if(com[s]!=',')
nombre de archivo[i]=com[s]
if(com[s] ]==',')
{
nombre de archivo[i]='\0';
s++;
}
}
for(i=0;s<50;s++,i++)
{ if(com[s ]==',') romper;
if(i>0) longth*=10;
if(com[s]!=','){ longth+=com [s]-48; printf("%c,%c,%d\n",com[s],com[s+1],longth }
}
s++;
atributo=com[s];
getchar();getchar();
printf("%s ,,%d , ,%c",nombre de archivo,longitud,atributo);
do{
if(strcmp(T->nombre,nombre de archivo)==0)
{ printf("El nombre del archivo estaba presente.\n");
return;
}
T=T->next;
} while(T!=NULL);
strcpy(N->nombre de archivo,nombre de archivo);
N->longth=longth;
N ->atributo=atributo;
N->dirección=(int)N;
leadU->siguiente=N;
leadU=N; p> p>
N->next=NULL;
printf("\nq--%s ,%d ,%c,%d",N->nombre de archivo,N->longitud ,N ->atributo,N->siguiente);
strcpy(S->nombre de archivo,nombre de archivo);
S->longth=longth;
S- >atributo=atributo;
S->leer=(int)S;
S->escribir=(int)S;
S- >estado ='s';
leadO->next=S;
leadO=S;
S->next=NULL;
printf("\nConfiguración exitosa.\n");
print();
}
void close()
{ nombre de archivo char[20]={
'\0'};
int i;
LUOF S,P;
P=S=(LUOF)malloc(sizeof(UOF));
S=cabezaO;P=cabezaO;
for(i=0,s+=1;s<50;s++,i++)
{ if( com[s]!=')')nombre de archivo[i]=com[s];
if(com[s]==')'){nombre de archivo[i]='\0'; s++; romper;}
}
hacer{
if(strcmp(S->nombre de archivo,nombre de archivo)==0) romper;
S=S->siguiente;
} while(S!=NULL);
if(S==NULL){printf("El archivo no se puede encontrar.\ n"); return;}
if(S->estado=='s') S->estado=' ';
else {
if(S->state!='o'){printf("El archivo se había cerrado.\n");}
}
while(P->next). !=S) P=P->siguiente;
P->siguiente=S->siguiente;
if(S==leadO) leadO=P;
free(S);
print();
printf("Archivo cerrado correctamente.");
}
void open()
{ nombre de archivo char[20]={'\0'};
char op;
int i;
LUFD T;
LUOF S,N;
T=(LUFD)malloc(tamañode(UFD));
S=N=( LUOF)malloc(sizeof(UOF));
T=headU; S=headO;
for(i=0,s+=1;s<20;s++,i++)
{ if(com[s]!=',')nombre de archivo[i]=com[s]
if(com[s]==','){ nombre de archivo[i]='\0'; s++; romper;}
}
op=com[s];
hacer{
if(strcmp(T->nombre de archivo,nombre de archivo)==0) break
T=T->siguiente;
} while(T!=NULL);
if(T==NULL){printf("El archivo no se puede encontrar.\n"); return;}
do{
if(strcmp). (S->nombre de archivo,nombre de archivo)==0)
{ if(S->estado=='s'){
printf("El archivo no se puede abrir.\n");return;}
else{ printf("El archivo se abrió.\n");}
}
S=S->siguiente;
}mientras(S!=NULL);
if(T->atributo==op)
{ strcpy(N->nombre de archivo,nombre de archivo);
N->atributo=op;
N->longth=T->longth;
N->estado='o';
N->read=T->dirección;
N->write=T->dirección;
plomoO->siguiente=N;
plomoO=N;
N->siguiente=NULL;
}
más printf("Operación illedge.\n");
print();
}
void delet()
{
nombre de archivo char[20];
int i;
LUFD T,P;
LUOF S,N;
P=T=(LUFD)malloc(tamañode(UFD));
N=S=(LUOF)malloc(tamañode(UOF));
T=cabezaU ; S=cabezaO; N=cabezaO; P=cabezaU;
for(i=0,s+=1;s<50;s++,i++)
{ if(com[ s]!=')')nombre de archivo[i]=com[s];
if(com[s]==')'){nombre de archivo[i]='\0'; break;}
}
do{
if(strcmp(T->nombre de archivo,nombre de archivo)==0)break;
T=T->siguiente;
} while(T!=NULL);
if(T==NULL){printf("El archivo fue eliminado.\n" ); return;}
hacer{
if(strcmp(S->filename,filename)==0) break;
S=S-> siguiente;
}mientras(S!=NULL);
si(S!=NULL)
{
mientras(N ->siguiente!=S) N=N->siguiente;
N->siguiente=S->siguiente;
if(S==leadO) leadO=N;
libre(S);
while(P->siguiente!=T) P=P->siguiente;
P->siguiente=T-> siguiente;
if(P==le
adU) leadU=P;
free(T);
}
print();
printf("El archivo se elimina éxito.\n");
}
void readf()
{ int i;
char filename[20]= {'\0'};
int rlong;
LUOF T;
T=(LUOF)malloc(sizeof(UOF)); >
T=cabezaO;
for(i=0,s+=1;s<50;s++,i++)
{ if(com[s]!=' ,')nombre de archivo[i]=com[s];
if(com[s]==','){nombre de archivo[i]='\0'; p>
}
for(i=0;s<50;s++,i++)
{ if(com[s]==')') descanso;
if(i>0) rlong*=10;
if(com[s]!=')'){ rlong+=com[s]-48; c,%c,%d\n",com[s],com[s+1],rlong); }
}
hacer{ if(strcmp(T- >nombre de archivo,nombre de archivo)==0) romper;
T=T->siguiente;
}mientras(T!=NULL);
if( T==NULL){printf("El archivo estaba abierto.\n"); return;}
if(T->state!='o')
{printf ("El archivo se cierra.\n"); return;}
T->read+=rlong;
print();
printf("Leer éxito del archivo.\n");
}
void writef()
{ char filename[20]={'\0'}; p>
int num,w,i;
LUOF T;
T=(LUOF)malloc(tamañode(UOF));
T =headO;
for(i=0,s+=1;s<50;s++,i++)
{ if(com[s]!=',')nombre de archivo[ i]=com[s];
if(com[s]==','){nombre de archivo[i]='\0'; }
for(i=0;s<50;s++,i++)
{ if(com[s]==',') descanso;
if(i>0) num*=10;
if(com[s]!=','){ num+=com[s]-48; %d\n",com[s],com[s+1],num); }
}
hacer{ if(strcm
p(T->nombre de archivo,nombre de archivo)==0) descanso;
T=T->siguiente;
}mientras(T!=NULL);
if(T==NULL){printf("El archivo estaba abierto.\n");}
if(T->state=='s') T->write+= num;
else {
if(T->attribute=='w')
{ printf("Secuencia o escritura Rand [0/1] : ");
scanf("%d",&w);
if(w==0) T->write+=num;
else T->write=((rand()+1)%50);
}
else { printf(" Operación illedge.\n"); p>
}
print();
printf("Escribir archivo correctamente.\n");
}
void main ()
{ char nombre[20];
char bom[20];
char b='y',t='y ';
int i,j=1;
init();
MFDinit();
while(t!= 'n')
{
printf("\n¿Desea configurar un nuevo nombre de usuario [y|n]: ");
if( (t=getchar())=='y')
SNEW();
}
while(b=='y') p>
{
printf("\nIngrese el nombre de usuario: ");
scanf("%s",nombre);
getchar ();
b='n';
hacer{
if(strcmp(leadM->nombre,nombre)==0)
romper;
leadM=leadM->siguiente;
} while(leadM!=NULL);
if(leadM!=NULL)
{
while(j)
{
printf("\nIngrese el comando: "); p> for(i=0;i<50;i++)
{
scanf("%c",&t);
if(t= ='(') s=i;
if(t=='\n')
{
com[i]='\0' ;
bom[i]='\0';
descanso;
}
com[i]=t; /p>
b
om[i]=t;
}
printf("1----%s,2-----%s\n",com,bom);
for(i=s;i<50;i++)
bom[i]='\0'
for(i=0;i <50;i++)
printf("%c",bom[i]
if(strcmp(bom,"create")==0)
crear();
if(strcmp(bom,"open")==0)
abrir();
if(strcmp( bom,"delete")==0)
eliminar();
if(strcmp(bom,"read")==0)
readf ();
if(strcmp(bom,"write")==0)
writef();
if(strcmp(bom,"cerrar ")==0)
close();
printf("\nIr al comando de entrada [y|n]:");
if( (t=getchar())=='n')
j=0;
getchar();
}
}
else{
printf("\nNo se puede encontrar este nombre de usuario.\n");
printf("\nInténtalo de nuevo[s/n]: ");
b=getchar();
getchar();}
}
printf("\n") ;
for(i=0;i<75;i++)
printf("=");
printf("\t\t\t \t FileManege Over\n");
for(i=0;i<75;i++)
printf("=");
}