このプログラムを 3 つのコマンド ライン引数 (2 つの int と 1 つのファイル名) で実行しようとしているだけです。
私は自分のプログラムを次のように実行しています:
a.out 1 2 devices.txt
devices.txt は次のようになります。
1
私の主な方法は次のようになります。
int main(int argc, char* argv[]){
int MaxIterations, T, numDevices;
FILE *devices;
printf("Num arguments: %d \n", argc);
if(argc < 3 || argc > 4){
printf("ERROR, need exactly 2 or 3 arguments!\n");
return 1;
} else if (argc == 3){
MaxIterations = argv[1]; // max iterations allowed
T = argv[2]; // time interval
devices = fopen("devices.in", "r");
} else {
MaxIterations = argv[1];
T = argv[1];
devices = fopen(argv[3], "r");
if(devices == NULL){
fprintf(stderr, "CANT OPEN FILE: %s!\n", argv[3]);
exit(1);
}
}
FILE* file = fopen ("devices.txt", "r");
int i = 0;
fscanf(devices, "%d", numDevices);
printf("Number of devices: %d \n", numDevices);
fclose(devices);
return 0;
}
セグフォルトを引き起こしている私は何を間違っていますか? セグフォルトが実際にトリガーされている場所を把握するために debug printf を追加しました。
fscanf(devices, "%d", numDevices);