Одна вещь, которая сразу приходит на ум, состоит в том, что аргументы программы включают имя исполняемого файла в качестве первого элемента
argv[0]
- это "sjf"
argv[1]
- это "file.text"
, поэтому вы должны использовать
fr = fopen (argv[1], "r");
Помните, что при отладке всегда пытайтесь сузить проблему, если вы знаете местоположение ошибки, причина часто становится очевидной или, по крайней мере, расследуемой.
В этом случае вам следует проверить argc >= 2
, распечатать argv[1]
, чтобы убедиться, что вы пытаетесь открыть нужный файл, а затем проверить, что файл был успешно открыт.
Наконец, проверьте коды ошибок fscanf, чтобы увидеть, что fscanf смог прочитать число.