帮你改正了,溢出的话你注意下:
scanf("%s",a[i]) -> scanf("%s",&a[i])
for(i=0;i<=99;i++) 应该是19,你a[5][20]会导致溢出
其他错误:(p+i)>=a ->(p+i)>='a'字符型的
建议:for(j=0;j<=39;j++) printf("%s\n",zimu[j]); -> 不要用换行,同一数组内,最好放一行,直观
May the force with you,Come on!
#include
int main()
{
char a[5][20];
char shuzi[40],zimu[40],qita[40];
char *p;
int i=0,j=0,k=0,l=0,m=0;
p=a[0];
for(i=0;i<=4;i++)
scanf("%s",&a[i]);
for(i=0;i<=19;i++)
{
if(*(p+i)<='z'&&*(p+i)>='a'||*(p+i)<='Z'&&*(p+i)>='A')
{
zimu[j]=*(p+i);
j++;
}
else if(*(p+i)<=9&&*(p+i)>=1)
{
shuzi[k]=*(p+i);
k++;
}
else
{
qita[l]=*(p+i);
l++;
}
}
printf("%d\n",j);
for(j=0;j<=39;j++)
printf("%c ",zimu[j]);
printf("\n");
printf("%d\n",k);
for(k=0;k<=39;k++)
printf("%c ",shuzi[k]);
printf("\n");
printf("%d\n",l);
for(l=0;l<=39;l++)
printf("%c ",qita[l]);
printf("\n");
return 0;
}
内存出现冲突了,去查查哪个程序与你的程序有冲突吧!