Ошибка сегментации не может возникнуть при компиляции. Если, конечно, компилятор нарушает безопасность памяти, что маловероятно. Я так понимаю, что это происходит при запуске программы: D.
Проблема здесь:
*filename = argv[1];
Должно быть:
filename = argv[1];
Почему? Вы объявили указатель на char
, унифицированное, в частности, нигде. Затем вы разыменовываете этот указатель и присваиваете данные этой позиции в памяти. Что, ну кто знает где!
Редактировать: вы также разыменовываете filename
в вызове printf()
. Удалить это *
:).
Кроме того, не 'компилятор выдает предупреждение, когда вы назначаете * имя файла? Можно ли предположить, что создание целого числа из указателя без приведения? Обратите внимание на предупреждения , они предоставляют полезную информацию!
Приветствие.