GilbertKun 2017-03-26 11:26 采纳率: 100%
浏览 1100
已采纳

关于数据结构字符串问题

编译运行成功,数据输入之后弹窗报错break:
Unhandled exception at 0x002b14e1 in project4b.exe: 0xC0000005: Access violation reading location 0xcccc0161.
下面是代码里求字串定位的函数:
int Index(SString *S,SString *T)
{int i,j,k,m,n;
m=T->length;\箭头定位在这里
n=S->length;
for(i=0;i<=n-m;i++)
{j=0;k=i;
while(jch[k]==T->ch[j])
{k++;
j++;}
if(j==m)return i;}
return -1;}

结构体定义:#define MaxStrSize 256
typedef struct{char ch[MaxStrSize];int length;}SString;

主函数在Index()函数前面部分:
SString *s,*p,*q;
int i,j,x,y;
printf("输入字符串\n");
scanf("%s",&s);
printf("输入需要替换的字符串\n");
scanf("%s",&p);
printf("输入替换后的字符串\n");
scanf("%s",&q);

x=Index(s,p);

怎么修改?
要不要给s,p,q用malloc分配空间?要的话能不能根据结构给个示例
s->length会自动获取吗?还是要写代码?要的话怎么写

  • 写回答

1条回答 默认 最新

  • 如空V 2017-03-26 12:09
    关注

    内存访问错误,可能是对常量字符串的非法访问。例如 char * s = "hello",char s[]="hello",这个可是不一样的,常量字符串是不可修改的!字符数组
    就不一样了,是变量。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?