输入.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);
}
答案 0 :(得分:2)
在功能中获取
char str[19];
这意味着您假设读入的每个字符串都将具有最大18
个字符。但是您的输入文件包含以下行:
hare_turtle_dist(20)
是20
char。这会导致崩溃。
要解决此问题,请将char数组的大小增加到至少21
。