我菜鸟,请各位师兄帮忙改下这个程序
#include<stdio.h>#include<string.h>
#define N 20 /* 文章的行数 */
char wz[N][80]; /* 存储文章的字符数组 ,为全局变量*/
/*输入函数*/
void readdat()
{FILE *fp;
int i,j,len;
char *str;
if(!(fp=fopen("E:/胡治强/静态文章.dat","r+")))/*打开文件*/
printf("未找到静态文件,请确认静态文件在指定位置!\n");
for(i=0;i<N;i++)
fgets(wz[i],80,fp);/*读文件*/
}
/*输出函数*/
void out()
{int i=0;
for(i=0;i<N;i++)
printf("%s",wz[i]);
}
int countword(int n1,int n2)
/*统计ASC 码在n1与n2之间的字符*/
{int i,j,len;
int n=0; /*统计字符数*/
for(i=0;i<N;i++)
{len=strlen(wz[i]);
for(j=0;j<=len;j++)
if(wz[i][j]>=n1&&wz[i][j]<=n2)/*wz[i][j]的ASC 码在n1与n2之间,n++*/
n++;
}
return n;
}
int cz(char *s) /*查找某一字符串出现的次数*/
{int n=0;
int i;
int lens;/*要查找字符串 *S 的长度*/
char *c;
lens=strlen(s);
for(i=0;i<N;i++)
{ c=strstr(wz[i],s);/*字符串*S在文章第i 行第一次出现的位置*/
while(*c!=0)
{n++;
c=strstr(c+lens,s);/*字符串*S在文章第i 行下一次出现的位置*/
}
}
return n;
}
void del(char *s)
{int i,j,k,leni,lenc,lens;
int p;
char *c;
lens=strlen(s);/*要删除字符串的长度*/
for(i=0;i<N;i++)
{ c=strstr(wz[i],s);/*字符串s 在文章第i行首次出现的位置*/
while(c!=0)/*c=0 则表明字符串s 在文章第i行没有出现*/
{leni=strlen(wz[i]);/*文章第i 行的长度*/
lenc=strlen(c);/*从字符串s 在文章第i行首次出现的位置处后的字符串的长度*/
p=leni-lenc;/* 两个长度的差 从此行的第p 个位置开始删除*/
for(k=1;k<=lens;k++)/*删除lens次*/
{
for(j=p;j<=leni;j++)
wz[i][j]=wz[i][j+1];/*字符前移*/
leni=strlen(wz[i]);
wz[i][j-1]='\0';
leni=strlen(wz[i]);
}
c=strstr(wz[i],s);
}
}
}
main()
{
int word,space,num,zifu;/*字母数,空格数,数字数,字符数*/
int n; /*某字符串数*/
int leni;
int i=0,j=0;
char s1[80],*s;
printf(" *************************************************************** ");
printf(" *****************请选择你编辑文章来源******************\n ");/*从文件读入数据,还是从键盘输入数据*/
printf(" **************1 调用静态储存文章**************\n");/*从文件读入数据输入1*/
printf(" **************2 手写输入编辑文章**************\n");/*从键盘输入数据输入2*/
printf(" ******10计算机学院******201010804009*******胡治强******\n");
printf(" *************************************************************** \n");
scanf("%d",&n);
getchar();
switch(n)
{case 1:
readdat();
break;
case 2:
printf("请手写输入需要编辑的文章,结束以回车后#结束!\n");
gets(s1);
while(strcmp(s1,"#")!=0&&i<N)
{
strcpy(wz[i],s1);/*将s1中的内容复制到wz[i]中*/
leni=strlen(s1);
wz[i][leni]='\n';
gets(s1);
i++;
}
break;
default:
printf("输入错误!\n");
break;
}
printf("静态文件如下:\n ");
out();
word=countword('a','z')+countword('A','Z');/*统计字母*/
printf("\n字母个数为 :\t%d\n",word);
space=countword(' ',' ');/*统计空格*/
printf("空格个数为 :\t%d\n",space);
num=countword('0','9');/*统计数字*/
printf("数字个数为 :\t%d\n",num);
/*统计所有字符*/
zifu=countword(32,44)+num+countword(59,94)+countword(97,126)+countword(174,175);
printf("字符总数为 :\t%d\n",zifu+space);
/*字符串的查找*/
printf("\n请输入想查找的字符串:\t");
scanf("%s",s);
n=cz(s);
printf("\n该字符串 %s 出现 %d 次 \n",s,n);
getchar();
/*字符串的删除*/
printf("\n请输入你想删除的字符串:\t");
scanf("%s",s);
printf("\n删除前的文章为:\n");
printf("%s\n",s);
out();
n=cz(s);
if(n==0)
printf("\n找不到该字符!\n");
else
{
del(s);
printf("\n删除后的文章为: \n");
printf("%s:\n",s);
out();
}
}