13,824
社区成员
发帖
与我相关
我的任务
分享
while((i<=slt.size-p.size+1)&&(!succ))//计算不同类型容器中的元素个数的 文本长度
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 1000
{typedef char datatype;
typedef struct {
datatype a[MAXSIZE];
int size;
}e_list;
e_list s;
e_list t;
/*输出删除某一字符串后的文章*/
void ptint_slt(e_list slt) /*输出文本*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
printf("%c",slt.a[i]);
j++;
if(j%20==0) printf("\n");
}
}
void letter_number(e_list slt) /*全部字母个数*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
if((slt.a[i]>='a'&&slt.a[i]<='z')||(slt.a[i]>='A'&&slt.a[i]<='Z'))
j++;
}
printf("%d",j);
}
void space_number(e_list slt) /*全部空格个数*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
if(slt.a[i]==' ')
j++;
}
printf("%d",j);
}
void size_number(e_list slt) /*文章总字数*/
{
printf("%d",slt.size);
}
void dele_print(e_list p,e_list slt) /*输出删除某一字符串后的文章*/
{
int i,j,succ;
i=0;succ=0; /*用i扫描正文t,succ为匹配成功标志*/
while((i<=slt.size-p.size+1)&&(!succ))
{
j=0;succ=1; /*用j扫描模式p*/
while((j<=p.size-1)&&succ)
if(p.a[j]==slt.a[i+j]) j++;
else succ=0;
i++;
}
if(succ)
{
for(j=0;j<(slt.size-p.size-1);j++)
{
slt.a[i-1]=slt.a[i+p.size-1];
i++;
}
slt.size=slt.size-p.size;
for(i=0;i<slt.size;i++)
{
printf("%c",slt.a[i]);
}
printf("\n");
}
else printf("\n错误!没有与字符串相配的子串!");
}
int main()
{
int i;
int right;
s.size=0;
printf("请输入一个字符串:");
for(i=0;i<MAXSIZE;i++)
{
s.a[i]=getchar();
s.size++;
if(s.a[i]=='\n') {s.size--; break;}
}
printf("\n文本录入完毕!输出的文本为..\n");
ptint_slt(s);
printf("\n全部字母个数为:");
letter_number(s);
printf("\n全部空格个数为:");
space_number(s);
printf("\n文章总字数为:");
size_number(s);
printf("\n要删除的字符串为:");
for(i=0;i<MAXSIZE;i++)
{
t.a[i]=getchar();
t.size++;
if(t.a[i]=='\n') {t.size--; break;}
}
printf("\n删除字符串后的结果为:");
dele_print(t,s);
system("pause");
return 0;
}}