所以,我在程序中遇到了一个非常奇怪的错误,并且我已经将它缩小到与getline()
有关并声明一个大于8的数组。但是,我非常困惑为什么要这样做,所以非常感谢任何帮助或解释。
#include <stdio.h>
#include <stdlib.h>
void populateConfig();
int main(int arc, char *argv[])
{
// when thing is size 8 it works fine
char thing[9];
populateConfig();
return 0;
}
void populateConfig(){
FILE *fp;
char string1[1000], string2[1000];
char *line;
int len = 0;
fp = fopen("ws.conf", "r");
while(fscanf(fp, "%s", string1) != -1){
// Commenting out if statement prevents crash
if(string1[0] == '#'){
getline(&line, &len, fp);
continue;
}
}
fclose(fp);
}
所以,我只是在配置文件中阅读,如图所示,当我将thing
的大小更改为8或更低时,它可以正常工作,当我注释掉if
时populateConfig()
中的陈述也有效。这与堆栈或内存有关吗?我应该采取不同的做法吗?