0
來源:分段故障數據集
#include<stdio.h>
int load(char fileName[], int array[]);
int sort(int array[], int length);
int print(int length, int array[]);
int main() {
char fileName[300];
int numList[300];
int length;
printf("File Name: ");
scanf("%s", fileName);
length = print(sort(numList,load(fileName, numList)), numList);
printf("\nLength: %i\n", length);
printf("Finished execution.\n");
return 0;
}
int load(char fileName[], int array[]) {
FILE *input = fopen(fileName, "r");
int length = 0, i = 0;
if(input == NULL) {
fprintf(stderr, "Error accessing file.\n");
} else {
while(fscanf(input, "%i", &array[i]) != EOF) {
i++;
length++;
}
}
fclose(input);
return length;
}
int sort(int array[], int length) {
int a, b, c;
for (a = 0 ; a < (length - 1); a++) {
for (b = 0 ; b < length - a - 1; b++) {
if (array[b] > array[b+1]) {
c = array[b];
array[b] = array[b+1];
array[b+1] = c;
}
}
}
return length;
}
int print(int length, int array[]) {
int i;
printf("\n[NUMBERS]\n\n");
for (i = 0; i< length; i++) {
printf("[N]%i\n", array[i]);
}
return length;
}
我需要使用I/O重定向提交整數的隨機數據集的節目,但是當我使用重定向提交包含數據集的文件,它會拋出一個段錯誤。我非常熟悉segfaults,以及爲什麼他們會傳統上拋出,但我一直在這個計劃前面呆了好幾個小時,但沒有找到問題的根源。
您是否嘗試使用調試器來查看段錯誤發生的位置?另外 - 它看起來你的代碼只從STDIN中讀取文件名,其他的一切都是直接從文件中讀取的。你不能從文件中重定向顯式讀取;您只能重定向爲每個進程打開的三個IO句柄。 – Amadan
你說你需要使用重定向,但這意味着使用標準輸入/標準輸出。但是,您的程序顯然是嘗試從文件中讀取數據。那真的沒有網格。 – RichardPlunkett
即使在'input == NULL'的情況下,你也會'輸入'。 – timrau