if(!strcmp(check->name,name)) break; else
check=check->next; }
if(check==NULL) {
printf(\goto con_g; }
//success
cur_con=check; MenuFolder(); return; }
//step ~
void absolutePathFileController() {
printf(\
printf(\printf(\
char name[28];
printf(\absolute:printf(\scanf(\
if(name[0]=='#') return;
char folder_name[10]; char file_name[14];
//analyse the absolute path //get folder name if(name[0]=='/') {
printf(\goto absolute; }
15
int i=0,j=0;
while(name[i]!='/'&&i<=9) {
if(name[i]=='\\0') {
printf(\goto absolute; }
folder_name[i]=name[i]; i++; }
folder_name[i]='\\0'; i++;
//get file name if(name[i]=='\\0') {
printf(\goto absolute; }
while(name[i+j]!='\\0'&&j<=9) {
file_name[j]=name[i+j]; j++; }
file_name[j]='\\0';
printf(\printf(\
printf(\printf(\printf(\
//seek folder
Content *folder_checker;
folder_checker=cur_user->conHead; while(folder_checker!=NULL) {
if(!strcmp(folder_checker->name,folder_name)) break; else
16
folder_checker=folder_checker->next; }
if(folder_checker==NULL) {
printf(\goto absolute; }
//seek file
File *file_checker;
file_checker=folder_checker->fileHead; while(file_checker!=NULL) {
if(!strcmp(file_checker->name,file_name)) break; else
file_checker=file_checker->next; }
if(file_checker==NULL) {
printf(\goto absolute; }
//read the file
char fullName[20]={\strcat(fullName,file_name);
printf(\file_checker->fp=fopen(fullName,\char ch;
while(ch!=EOF) {
putchar(ch=getc(file_checker->fp)); }
printf(\fclose(file_checker->fp);
return; }
17
3.2 文件管理系统:
截图3-3
相关核心代码: //step1-2
void MenuFolder() {
void FileCreate(); void FileRead(); void FileWrite(); void FileDelete(); void FileMove();
File *goThrough; Content *current; current=cur_con;
goThrough=current->fileHead; char buffer[2]; int choice;
for(;;) {
fgets(buffer,2,stdin);
printf(\printf(\printf(\printf(\printf(\printf(\
printf(\
printf(\printf(\view all your files below: %d files
18
total\\n\if(current->fileHead==NULL) printf(\|\\n no file.\\n\else {
goThrough=current->fileHead; while(goThrough!=NULL) {
printf(\|\\n %s\\n\goThrough=goThrough->next; } }
printf(\printf(\choice=-1;
scanf(\switch(choice) {
case 1:FileCreate();continue; case 2:FileRead();continue; case 3:FileWrite();continue; case 4:FileDelete();continue; case 5:FileMove();continue;
case 6:printf(\
case 0:printf(\default:printf(\} } }
//step2
void FileCreate() {
Content *cur_content; cur_content=cur_con;
//allocate new memory block for new file's index File *add,*last;
add=(File *)malloc(sizeof(File)); add->next=NULL; add->fp=NULL;
19