gpt4 book ai didi

c - 为什么这个程序给出 "stack smashing error"?

转载 作者:行者123 更新时间:2023-11-30 20:57:24 25 4
gpt4 key购买 nike

输入.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com