- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
输入.txt内容
start_point(0)
end_point(100)
turtle_speed(3)
hare_speed(6)
hare_sleep_time(5)
hare_turtle_dist(20)
process_delay(1)
如果我将 hare-TURTLE_DIST 大于 10,则会发生堆栈粉碎错误
代码
#include<stdio.h>
#include<stdlib.h>
void get(int *a,FILE *fp,int i,int j){
char str[19];
int input=0;
fscanf(fp,"%s",str);
while(str[i]!=')'){
input=input*10+str[i]-48;
i++;
}
a[j]=input;
printf("%d\n",input);
}
main(){
int a[7];
FILE *fp;
int i,j=0;
fp=fopen("input.txt","r");
if (fp == NULL) {
fprintf(stderr, "Can't open input file in.list!\n");
exit(1);
}
i=12;
get(a,fp,i,j);
j++;
i=10;
get(a,fp,i,j);
j++;
i=13;
get(a,fp,i,j);
j++;
i=11;
get(a,fp,i,j);
i=16;
get(a,fp,i,j);
j++;
i=17;
get(a,fp,i,j);
j++;
i=14;
get(a,fp,i,j);
}
最佳答案
在函数中得到你有
char str[19];
这意味着您假设读入的每个字符串最多包含 18
字符。但是您的输入文件有以下行:
hare_turtle_dist(20)
有 20
个字符。这会导致崩溃。
要解决此问题,请将 char 数组的大小增加到至少 21
。
关于c - 为什么这个程序给出 "stack smashing error"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3458706/
我需要将对象的引用传递给构造函数。我在构造函数中传递了一个引用,但它给出了这个错误:Member "Smash::smash"is not a type name. 粉碎.h: #pragma onc
我看到很多答案,比如 this , 和 this网上说要用otool命令检查 stack_chk_guard和 stack_chk_fail在项目上。 问题是,我不知道 otool 必须应用到哪个文件
我正在尝试像描述的那样进行缓冲区溢出 here ,直到我暴力强制它才找到返回指针的偏移量,我发现它是21。继此stackoverflow post ,我得到了以下内存转储: (gdb) r 21 Th
我正在尝试连接两个字符串,然后在 UNIX 环境中进行系统调用。该程序执行了我想要的操作,但终止并出现错误 *** 检测到堆栈粉碎 *** 为什么会发生这种情况? 这是我的代码: main(int a
请解释在运行程序后堆栈粉碎的以下结果,其中我提供的输入远远超过字符数组的容量。 *** stack smashing detected ***: ./a.out terminated
我写了一个非常简单的 C++ 程序来生成随机字符串。在执行以下代码时,它会给出“检测到堆栈粉碎”。 #include #define SIZE 30 using namespace std; int
我正在尝试从 Smashing the Stack for Fun and Profit 做一个例子在 C 中,但我有点卡在某个点上,以下是代码(我有一台 64 位机器和 Ubuntu 64 位):
我正在使用从单个文件读取并使用 sprintf 将该数据写入多个文件的 C 程序,我在某处出错了,但我真的不知道在哪里这会导致此错误: *** stack smashing detected ***
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
这个问题已经有答案了: 奥 git _a (10 个回答) 已关闭 9 年前。 我正在用 C 语言编程并使用 gcc 进行编译。每次编译时,我都会收到堆栈粉碎检测到的错误。这是什么意思以及如何解决它?
所以我允许一个人测试我的 Socket 程序,他们通过消息将其设置为段错误: *** 检测到堆栈粉碎 ***:./myProgram 已终止 据我所知,这是一个 gcc 编译器功能,可以检测堆栈何时变
下面是一个名为 scrabble.c 的程序的代码片段,该程序用于玩该游戏的简化版本。用户会收到 7 个随机字符,然后被告知使用这些字符输入一个单词。我在使用接受用户输入并将其存储在数组中的函数时遇到
#include #include int main() { char str[] = "my name is khan. and i am not a terrorist\n";
我对 C 语言有非常初步的了解(尽管我确实了解一般的编程概念)。我的任务是创建一个缓冲区溢出,它会产生一些东西(比如访问未授权区域、免费资金等),而不仅仅是让程序崩溃。 我已经尝试过不同大小的缓冲区,
我需要使用 malloc 分配一个数组,并且我必须从输入中读取一些数字。这是我的代码: #include #include void read(int **array, int *array_si
这是我的代码。 struct ar { char array[10]; }b; void func() { char array[10]; scanf("%s",b.array
考虑以下非常基本的程序,它已以多种形式出现在此处的其他问题上。 #include int main() { char message[8]; strcpy(message, "Hel
这个问题不太可能帮助任何 future 的访客;它仅与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the
我需要知道在哪里可以更改咒语的范围 - THAIL SMASH 71077 关于这个咒语,我在 C++ 代码中唯一能看到的是: events.ScheduleEvent(EVENT_TAIL_SMAS
当执行下面的代码时,我得到一个Stack Smashing错误。 const uint size = 62; ... for (int i=0; i < 10; ++i){ // mask =
我是一名优秀的程序员,十分优秀!