引发了异常: 读取访问权限冲突。 s 是 0xD94000。

黄小猛 2018-10-25 10:15:07
好长时间没写过C了,当年也没好好学,水平实在太差,让各位见笑。
程序运行时报错
引发了异常: 读取访问权限冲突。 s 是 0xD94000。
int lengthOfLongestSubstring(char* s) {
int a[26] = { 0 }, n = 0, max = 0;
while (s != 0)
{
a[*s - 'a']++;
if (a[*s - 'a'] == 2);
{
for (int i = 0; i < 26; i++)
a[i] = 0;
if (max < n)
max = n;
n = 0;
}
n++;
s++;
}
return max;
}
int main()
{
char s[] = { "abcabcbb" };
printf("%d",lengthOfLongestSubstring(s));
}

调试的时候显示读取字符串字符时出错。
怎么想也想不明白,请问各位解答。
...全文
644 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2018-10-26
  • 打赏
  • 举报
回复
if语句多一个分号,while里面应该是*s
自信男孩 2018-10-26
  • 打赏
  • 举报
回复
while (s != 0)
while (*s != 0)

s是指针不是字符,因此应该是*s和0比较
云山大侠 2018-10-26
  • 打赏
  • 举报
回复
还需要说明的是,你的while判断是写错了,还是本来是这么设计了,s !=0 ;s是一个指针,你是不是要写成*s != 0
云山大侠 2018-10-26
  • 打赏
  • 举报
回复
  if (a[*s - 'a'] == 2);
{




这个地方有一个分号 , 因为这个分号的存在,这个是一个死循环,S指针会一直自增,然后超出分配的内存区域,就溢出了。
云山大侠 2018-10-26
  • 打赏
  • 举报
回复
这种错误一般是内存溢出,要么数组溢出了,要么没有分配内存。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧