是否有任何理由让较早编译的程序由于 fgets 而在某个点出现段错误?我根本没有更改任何与它相关的代码。突然我相信它无法打开文件,但我在十五分钟前用文件测试了它......我所做的只是添加了一个搜索功能,所以我不明白问题是什么......
可能是我通过 PuTTy 连接的服务器吗?
int createarray( int **arrayRef, FILE *fptr){
int size = 0, i;
char rawdata[100];
while (fgets(rawdata, 99, fptr) != NULL){
size++;
}
rewind(fptr);
*arrayRef = malloc(sizeof(int) * size);
for ( i = 0; i < size; i++ ){
fgets(rawdata, 99, fptr);
*(*arrayRef + i) = atoi(rawdata);
}
return size;
}
int main ( int argc, char **argv ) { //main call
// declare variable to hold file
FILE *inFilePtr = fopen(*(argv + 1), "r");
int **aryHold;
int numElements, sortchoice, key, foundindex;
// Call function to create array and return num elements
numElements = createarray(aryHold, inFilePtr);
这是编译、执行正确且此后未更改的代码。GDB 说 fgets 有错误。