Вы захотите сделать
printf("%s", ch);
Для формата %
аргумент является указателем на символы;передавая один символ по значению, вы говорите printf
интерпретировать значение ASCII этого символа как указатель, и это вас взорвет;то есть, если символом является 1
, то есть ASCII 49, то он будет искать в памяти байт 49 для строки - и, глядя вниз, обычно есть verboten .
Но во-вторых, я вижу, что вы звоните open()
вместо fopen()
.Вы должны использовать fopen()
, иначе вы не получите FILE*
, как ожидаете.
Оба этих параметра, вероятно, могут привести к segfault - вам нужно исправить их оба.