在第42行,我收到信號Program received signal SIGSEGV, Segmentation Fault
。打開文件時出現SIGSEGV錯誤
從我做的研究中,我相信它與我的指針有關,但我真的不知道是什麼。
下面是調試過程中調用堆棧:
#0 7560ECC0 strxfrm_l() (C:\windows\syswow64\msvcrt.dll:??)
#1 75665864 putwchar() (C:\windows\syswow64\msvcrt.dll:??)
#2 756658D4 msvcrt!fscanf() (C:\windows\syswow64\msvcrt.dll:??)
#3 00401494 readFile(filename=0x404024 <_Jv_RegisterClasses+4210724> "C:\\input.txt", seed=0x75601162 <onexit+53>, minSize=0x75655bc4 <msvcrt!atexit+13>, maxSize=0x401ef0 <__do_global_dtors>, count=0x28ff94) (C:\Users\xxxxx\Dropbox\School\Spring 13\Computer Sci\Project 4_Pxxxxxx\main.c:42)
#4 00401375 main() (C:\Users\xxxxx\Dropbox\School\Spring 13\Computer Sci\Project 4_Pxxxxxxxx\main.c:28)
相關代碼:
這裏是在main():
int main()
{
int array[4], min, max, Ans, avg, count;
readFile("C:\\input.txt", array[0], array[1], array[2], array[3]);
validateInput(array[0], array[1], array[2], array[3]);
generateNumbers(array, array[0], array[1], array[2], array[3]);
calculateStatistics(array, 4, min, max, Ans, avg);
printReport(array, 4, array[1], count, min, max, Ans, avg);
}
35 bool readFile(char *filename, int *seed, int *minSize, int *maxSize, int *count)
36 {
37 int readCount;
38 FILE *fp; // FILE must be ALL CAPS
39 bool status = true;
40
41 fp=fopen("input.txt", "r"); // Opens the file for reading
42 readCount = fscanf(fp, "%d %d %d %d", seed, minSize, maxSize, count);
43 if(readCount != 4)
44 {
45 printf("At least one of the supplied values is invalid.\n");
46 status = false;
47 }
48 fclose(fp); // Closes the file
49 return status;
50 }
什麼程序正試圖做的是打開該文件並傳遞值轉換成另一個函數來生成一個隨機數組。
'fopen'可能失敗,'fp'爲'NULL'。或者你傳遞的其中一個指針是錯誤的。 – cnicutar
您正在傳入「文件名」參數,但未使用它。那是故意的嗎? –
順便說一下,這個文件名應該是'const char *'。 – 2013-03-31 18:03:28