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

关于数据结构字符串问题

编译运行成功,数据输入之后弹窗报错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",这个可是不一样的,常量字符串是不可修改的!字符数组
    就不一样了,是变量。

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

报告相同问题?

悬赏问题

  • ¥20 access中怎么分割分别获取一下图中的值
  • ¥15 keras_tcn已经安装成功,还是显示ModuleNotFoundError: No module named 'keras_tcn'
  • ¥15 类图中关联与聚合的区别
  • ¥15 ENVI高分五号去除云层的方法
  • ¥15 16进制数据如何得到奇偶校验位
  • ¥15 求合并两个字节流VB6代码
  • ¥15 Pyqt 如何正确的关掉Qthread,并且释放其中的锁?
  • ¥30 网站服务器通过node.js部署了一个项目!前端访问失败
  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题