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

#include<stdio.h>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;    for(i=0;i<=4;i++)        scanf("%s",a[i]);    for(i=0;i<=99;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",j);    for(j=0;j<=39;j++)        printf("%s\n",zimu[j]);    printf("%d",k);    for(k=0;k<=39;k++)        printf("%s\n",shuzi[k]);    printf("%d",l);    for(l=0;l<=39;l++)        printf("%s\n",qita[l]);}题目是输入5个串字符,把所有字符串中的字母、数字、其它字符分别存入一个字符数组中,然后输出它们以及字符个数。考查目标:双循环语句、选择控制、指针。要是觉得我的程序错的太多不好改,麻烦谁帮忙写个程序啊!!!

帮你改正了,溢出的话你注意下:
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<stdio.h>
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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-09
内存出现冲突了,去查查哪个程序与你的程序有冲突吧!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网