Ваша проблема в том, что вы никогда не выделяли c
и content
, поэтому они не указывают нигде в определенном месте - скорее всего, они указывают на какую-то нераспределенную память или что-то, чего вообще не существует.А потом вы помещаете данные в них.Вы должны выделить их в первую очередь.(Это то, что обычно означает ошибка шины; вы пытались сделать доступ к памяти недопустимым.)
(С другой стороны, поскольку c
всегда содержит только один символ, вы можете объявить его как char c
и передайте &c
в scanf. Не нужно объявлять строку символов, когда вы это сделаете.)
Как только вы это сделаете, вы столкнетесь с проблемой проверки того, что content
достаточно долго, чтобы держать все входные данные.Либо вам нужно угадать, какой объем входных данных вы ожидаете, и распределить его как минимум так долго (а затем вывести ошибку, если вы его превысите), либо вам нужна стратегия, чтобы перераспределить его в большем размере, если он недостаточно длинный.
О, и вы также столкнетесь с проблемой, что strcat
ожидает строку, а не один символ.Даже если вы оставите c
как char*
, вызов scanf
не сделает его строкой.Односимвольная строка - это (в памяти) символ, за которым следует нулевой символ для обозначения конца строки.scanf
, при поиске одного символа, не будет вставлять нулевой символ после него.В результате strcpy
не будет знать, где находится конец строки, и будет блуждать по памяти в поисках нулевого символа.