📄 样例解答.txt
字号:
#include<ctype.h>
#include<string.h>
#include<stdio.h>
#define Web struct web
Web /*地址簿格式*/
{
char szWww[5];
char szNa[9];
char szAdm[5];
char szCountry[4];
};
Web *strpPtr[25];
int nNum; /* 增加全局变量,指示目前数据库中的数据个数*/
void Sort_f(Web *strpPtr[], int nNum)/*选择法排序*/
{
Web *strpPoint;
int nCounti,nCountj,nCountk;
for(nCounti=0;nCounti<nNum-1;nCounti++)
{
nCountk=nCounti;
for(nCountj=nCounti+1;nCountj<nNum;nCountj++)
if(strcmp(strpPtr[nCountk]->szNa,strpPtr[nCountj]->szNa)>0)
nCountk=nCountj;
if(nCountk!=nCounti)
{
strpPoint=strpPtr[nCounti];
strpPtr[nCounti]=strpPtr[nCountk];
strpPtr[nCountk]=strpPoint;
}
}
}
Delete_f(Web *strpPtr[], int nCount, int *npNum)/*删除一个字符串*/
{
int nCounti;
for(nCounti=nCount;nCounti<*npNum-1;nCounti++)
strpPtr[nCounti]=strpPtr[nCounti+1];
--*npNum;
}
void main()
{
char szStr[21];
char szStr1[21];
FILE *fp; /*数据文件指针*/
char szFileName[20]; /*存放数据文件名*/
int nChoice;
char szCon[5]="www.";
char szMainWww[5];
char szMainNa[9];
char szMainAdm[5];
char szMainCoun[4];
int nCounti=0;
int nCountj=0;
int nCountk=0;
int nCount=0;
int nDot=0;
printf("Please Input the Data File\n");/*新增功能,打开数据文件,将数据文件中的内容放入指针数组中,若没有该数据文件,则建立该文件*/
gets(szFileName);/*输入文件名*/
if((fp=fopen(szFileName, "rb"))==NULL)
{
printf("Not Fount this File, Create it! \n");
for(nCount=0;nCount<25;nCount++)/*指针数组清零*/
strpPtr[nCount]=NULL;
}
else
{
while(!feof(fp))/*读取文件中的内容*/
{
strpPtr[nNum]=(Web *)malloc(sizeof(Web));
fread(strpPtr[nNum],sizeof(Web),1,fp);
nNum++;
}
nNum--;
fclose(fp);
}
do/*从这里开始,进行主体循环*/
{
printf("======================================================\n");
printf(" Welcome To Domain Name Server Program!\n\n");
printf("=======================================================\n");
printf("Please select any nChoice from the following: \n\n");
printf("[1] Look up a URL.\n");
printf("[2] Insert a URL.\n");
printf("[3] delete a URL.\n");
printf("[4] Update a URL.\n");
printf("[5] List All URL.\n"); /*新增功能,显示数据库中的所有域名*/
printf("[6] Quit.\n\n");
scanf("%d", &nChoice);
if(nChoice!=5 && nChoice!=4&&nChoice!=6)
{
printf("Enter the URL.\n");
getchar();
gets(szStr);
for(nCountj=0;szStr[nCountj]!='\0';nCountj++)
{
szStr[nCountj]=tolower(szStr[nCountj]);
if(szStr[nCountj]=='.')
nDot++;
}
}
if(nChoice==1)
{
for(nCounti=0;nCounti<4;nCounti++)
szMainWww[nCounti]=szStr[nCounti];
szMainWww[4]='\0';
if( strcmp(szMainWww,szCon) != 0 )
{
szMainWww[0]='\0';/*当第一个字符串形式不为www时,szMainWww内清零*/
for(nCounti=0,nCountj=0;szStr[nCounti]!='.' && szStr[nCounti]!='\0';nCounti++,nCountj++)
szMainNa[nCountj]=szStr[nCounti]; /*第一个字符串(域名)进szMainNa*/
szMainNa[nCountj]='\0';
for(nCount=0;nCount<nNum;nCount++)
if(strcmp(strpPtr[nCount]->szNa,szMainNa)==0)
{
printf("The address is present in the data\n");
printf("%s%s%s%s\n", strpPtr[nCount]->szWww, strpPtr[nCount]->szNa, strpPtr[nCount]->szAdm, strpPtr[nCount]->szCountry);
break;/*找到后,退出循环*/
}
if(nNum>=nCount)
printf("No matching address found");
}
else
{
for(nCounti=4,nCountj=0;szStr[nCounti]!='.' && szStr[nCounti]!='\0';nCounti++,nCountj++)
szMainNa[nCountj]=szStr[nCounti];
szMainNa[nCountj]='\0';
for(nCount=0;nCount<nNum;nCount++)
if(strcmp(strpPtr[nCount]->szNa,szMainNa)==0)
{
printf("The address is present in the data\n");
printf("%s%s%s%s\n", strpPtr[nCount]->szWww, strpPtr[nCount]->szNa, strpPtr[nCount]->szAdm, strpPtr[nCount]->szCountry);
break;/*找到后,退出循环*/
}
if(nNum<=nCount)
printf("No matching address found");
}
}
if(nChoice==2)
{
for(nCounti=0;nCounti<4;nCounti++)
szMainWww[nCounti]=szStr[nCounti];
szMainWww[4]='\0';
for(nCounti=4,nCountj=0;szStr[nCounti]!='.';nCounti++,nCountj++)
szMainNa[nCountj]=szStr[nCounti];
szMainNa[nCountj]='\0';
strpPtr[nNum]=(Web *)malloc(sizeof(Web));
szMainAdm[0]='.';
for(nCounti++,nCountj=1;szStr[nCounti]!='.' && szStr[nCounti]!='\0';nCounti++,nCountj++)
szMainAdm[nCountj]=szStr[nCounti];
szMainAdm[nCountj]='\0';
if(nDot==3)
{
szMainCoun[0]='.';
for(nCounti++,nCountj=1;szStr[nCounti]!='\0';nCounti++,nCountj++)
szMainCoun[nCountj]=szStr[nCounti];
szMainCoun[3]='\0';
}
else
szMainCoun[0]='\0';
strcpy(strpPtr[nNum]->szWww,szMainWww);
strcpy(strpPtr[nNum]->szNa,szMainNa);
strcpy(strpPtr[nNum]->szAdm,szMainAdm);
strcpy(strpPtr[nNum]->szCountry,szMainCoun);
printf("The address is successfully registered in the data\n");
nNum++;
Sort_f(strpPtr, nNum);/* 排序 */
}
if(nChoice==3)
{
for(nCounti=0;nCounti<4;nCounti++)
szMainWww[nCounti]=szStr[nCounti];
szMainWww[4]='\0';
for(nCounti=4,nCountj=0;szStr[nCounti]!='.';nCounti++,nCountj++)
szMainNa[nCountj]=szStr[nCounti];
szMainNa[nCountj]='\0';
szMainAdm[0]='.';
for(nCounti++,nCountj=1;szStr[nCounti]!='.' && szStr[nCounti]!='\0';nCounti++,nCountj++)
szMainAdm[nCountj]=szStr[nCounti];
szMainAdm[nCountj]='\0';
if(nDot==3)
{
szMainCoun[0]='.';
for(nCounti++,nCountj=1;szStr[nCounti]!='\0';nCounti++,nCountj++)
szMainCoun[nCountj]=szStr[nCounti];
szMainCoun[3]='\0';
}
else
szMainCoun[0]='\0';
for(nCounti=0;nCounti<nNum;nCounti++)/*循环查找*/
{
if(strcmp(strpPtr[nCounti]->szNa,szMainNa)==0)
break;
}
if(nCounti>=nNum)
printf("Not Found this URL\n");
else
Delete_f(strpPtr, nCounti, &nNum);/*找到后,删除*/
}
if(nChoice==4)
{
printf("Enter the old URL.\n");
getchar();
gets(szStr);
for(nCountj=0;nCountj<22;nCountj++)
{
szStr[nCountj]=tolower(szStr[nCountj]);
if(szStr[nCountj]=='.')
nDot++;
}
for(nCounti=4,nCountj=0;szStr[nCounti]!='.';nCounti++,nCountj++)
szMainNa[nCountj]=szStr[nCounti];
szMainNa[nCountj]='\0';
for(nCounti=0;nCounti<nNum;nCounti++)
if(strcmp(strpPtr[nCounti]->szNa,szMainNa)==0)
break;
if(nCounti>=nNum)
printf("The address is not in the data to be updated\n");
else
{
nCount=nCounti;
Delete_f(strpPtr, nCount, &nNum);/*循环查找,找到后删除*/
printf("Enter the new URL\n");
gets(szStr1);
for(nCountj=0;szStr1[nCountj]!='\0';nCountj++)
{
szStr1[nCountj]=tolower(szStr1[nCountj]);
if(szStr1[nCountj]=='.')
nDot++;
}
for(nCounti=0;nCounti<4;nCounti++)
szMainWww[nCounti]=szStr1[nCounti];
szMainWww[4]='\0';
for(nCounti=4,nCountj=0;szStr1[nCounti]!='.';nCounti++,nCountj++)
szMainNa[nCountj]=szStr1[nCounti];
szMainNa[nCountj]='\0';
szMainAdm[0]='.';
for(nCounti++,nCountj=1;szStr1[nCounti]!='.' && szStr1[nCounti]!='\0';nCounti++,nCountj++)
szMainAdm[nCountj]=szStr1[nCounti];
szMainAdm[nCountj]='\0';
if(nDot==3)
{
szMainCoun[0]='.';
for(nCounti++,nCountj=1;szStr1[nCounti]!='\0';nCounti++,nCountj++)
szMainCoun[nCountj]=szStr1[nCounti];
szMainCoun[3]='\0';
}
else
szMainCoun[0]='\0';
strpPtr[nNum]=(Web*)malloc(sizeof(Web));
strcpy(strpPtr[nNum]->szWww,szMainWww);
strcpy(strpPtr[nNum]->szNa,szMainNa);
strcpy(strpPtr[nNum]->szAdm,szMainAdm);
strcpy(strpPtr[nNum]->szCountry,szMainCoun);
nNum++;
Sort_f(strpPtr, nNum);/*插入后排序*/
printf("The address is successfully updated in the data.\n");
}
}
if(nChoice==5)
{
printf("The List of URL: \n");/*循环显示*/
for(nCount=0;nCount<nNum;nCount++)
printf("%s%s%s%s\n", strpPtr[nCount]->szWww, strpPtr[nCount]->szNa, strpPtr[nCount]->szAdm, strpPtr[nCount]->szCountry);
}
if(nChoice==6)/*退出程序时,将数据保存在数据文件中*/
{
if((fp=fopen(szFileName, "wb"))==NULL)
{
printf("File Error\n");
exit(0);
}
for(nCount=0;nCount<nNum;nCount++)
fwrite(strpPtr[nCount],sizeof(Web),1,fp);
fclose(fp);
}
}while(nChoice!=6);/*循环结束条件*/
printf(" Thank You !\n\n");
printf("=========================================\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -