基于堆栈的缓冲区溢出问题

蓬莱山岚 2018-11-10 09:51:51
#include<stdlib.h>
#include<stdio.h>

int main()
{
int x(int a, int b, int c);
int y(char w[]);

int i,num,b1=0, b2=0, b3=0,c[10];
int j;
char b[100];

scanf_s("%d", &num);
for (i = 0;i < num;i++)
{
scanf_s("%s",b);
if (y(b) == 0) { c[i] = 0;continue; }

for (j = 0;b[j] != 'P';j++)if(b[j]=='A')b1++;
for (j = b1 + 1;b[j] != 'T';j++)if (b[j] == 'A')b2++;
for (j = b2 + 1;b2 != '\0';j++)if (b[j] == 'A')b3++;
c[i] = x(b1, b2, b3);
}
for (i = 0;i < num;i++)
{
if (c[i] == 1)printf("Yes");
else printf("No");
}

system("pause");
return 0;
}
int x(int a, int b, int c)
{
if (b ==0) return 0;
if (b - 1 == 1 && a == c) return 0;
if ( x (a, b - 1, c - a) == 1) return 1;
}

int y(char w[])
{
int i;
for (i = 0;w[i] != '\0';i++)
{
if (w[i] != 'P'&&w[i] != 'A'&&w[i] != 'T') return 0;
}
return 1;
}
这一段代码找不出问题。。就是pat上的1003题
...全文
1322 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-11-13
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
蓬莱山岚 2018-11-12
  • 打赏
  • 举报
回复
看不懂啊。。
蓬莱山岚 2018-11-12
  • 打赏
  • 举报
回复
0x00007FF6B95531FC 处有未经处理的异常(在 Project1.exe 中): 堆栈 Cookie 检测代码检测到基于堆栈的缓冲区溢出。 出现了
AlbertS 2018-11-12
  • 打赏
  • 举报
回复
把具体的报错信息贴出来有助于更快的找到错误原因

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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