c语言程序运行提示 xxxxxxxxx指令引用的xxxxxxxxxx 内存 该内存不能为 read

2025-02-01 05:02:19
推荐回答(2个)
回答1:

帮你改正了,溢出的话你注意下:
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;
}

回答2:

内存出现冲突了,去查查哪个程序与你的程序有冲突吧!