C 語言的一個錯誤,沒找出原因
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(void)
{
char str[512];
char *endpstr;
int N;
struct struct_num {
int highs[N];
int violate[N];
};
struct struct_num num;
/* 獲取N */
scanf("%d", &N);
getchar();
/* 獲取身高數據 */
fgets(str, 512, stdin);
endpstr = str;
int cur = 0
/* while (endpstr) { */
/* num.highs[i++] = strtol(endpstr, &endpstr, 10); */
/* printf("%d\n", strtol(endpstr, &endpstr, 10)); */
;
/* } */
return 0;
}
這段代碼是可以編譯通過的,但是,只要我把512, 換成1024,1022,都會得到
Segmentation fault (core dumped)
沒有任何要求我輸入,直接顯示錯誤哦
如果換乘
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(void)
{
char str[1024];
char *endpstr;
int N;
struct struct_num {
int highs[N];
int violate[N];
};
int cur;
struct struct_num num;
/* 獲取N */
scanf("%d", &N);
getchar();
/* 獲取身高數據 */
fgets(str, 1024, stdin);
endpstr = str;
cur = 0;
while (endpstr) {
/* num.highs[i++] = strtol(endpstr, &endpstr, 10); */
printf("%d\n", strtol(endpstr, &endpstr, 10));
/* ; */
}
return 0;
}
會顯示的錯誤是:
Bus error (core dumped)
如果換成512,也會能夠編譯通過。這是為什麽?
C 語言的一個錯誤,沒找出原因