分段错误11由缓冲区引起?

时间:2015-02-11 21:58:03

标签: python

因为这件事,我一直把头发拉出来。我是C语言的新手。它一直给我一个"分段错误:11"错误信息。我无法弄清楚出了什么问题。

我认为问题可能在于我的代码的以下部分:

int counter = 21; 


 char load[counter];


while(fgets(load, 81, input) != NULL) 

1 个答案:

答案 0 :(得分:1)

您有内存访问问题。你有:

int B = 21;

...

char buffer[B];

...

while(fgets(buffer, 81, input) != NULL) {

由于您正在访问buffer越界,您的程序将受到未定义的行为。您可以通过确保在B的调用中使用81而不是fgets()来解决此问题。如果您希望能够一次将81个字符读入buffer,请将B的值设置为81

int B = 81; // 81 instead of 21

...

char buffer[B];

...

while(fgets(buffer, B, input) != NULL) { // B instead of 81