C 语言的一个错误,没找出原因

Posted WenYao.Huang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 语言的一个错误,没找出原因的主要内容,如果未能解决你的问题,请参考以下文章

求一个没错误的银行家算法程序,c语言或C++的都行!!!!

C语言popen函数编译(连接)的时候总说有一个error(错误),找不到原因求大神帮忙TAT

IDEA编译报语法错误? 可能是默认机制搞的鬼!

为啥一个c语言在windows下编译运行没问题,在linux下编译通过,但是运行就错误了

C语言找出一个数组中出现次数最多的那个元素

无法找出 Spark LinearRegression 错误的原因