В коде есть ряд проблем, которые могут вызвать проблемы.
fp
и fp1
должны быть проверены на NULL
после присвоения результата fopen
для проверки ошибок открытия файла.
Тип c
должен быть int
, чтобы вы могли правильно отличить EOF
от правильно прочитанного действительного символа.
c == ""
пытается сравнить символьное значение с адресом буквенной строки нулевой длины.
fprintf(fp1,"%s",c)
интерпретирует это символьное значение c как адрес постоянной строки и пытается следовать по этому адресу для печати строки. Это наиболее вероятная ошибка, вызывающая ошибку сегментации.
Менее важные вопросы стиля.
Возвращаемое значение main
должно быть int
. Это правильно, даже если многие реализации допускают void main(void)
.
Поскольку тело вашего предложения if
совпадает с тем, что произойдет, если цикл завершится и за ним будет следовать continue
, возможно, было бы яснее удалить это предложение и применить оператор if с противоположным из того, что вы думаете c==""
должно стать тем, что в настоящее время является else
заявлением.