Предлагаю вам приобрести хорошую серию книг / видео на C. Это не тот язык, который весело подбирать на ровном месте.
В любом случае, ваша проблема в том, что вы не сформировали правильную строку. В Си строка - это указатель на начало непрерывной области памяти, которая заполнена символами. Нет никаких данных о его размере или каких-либо других характеристиках. Только где это начинается и что это такое. Поэтому вы должны предоставить информацию о том, когда строка заканчивается явно. Это достигается тем, что для самого последнего символа в строке устанавливается так называемый нулевой символ (в C он представлен escape-последовательностью '\0'
.
Это означает, что любая строка должна быть на один символ длиннее содержимого, которое вы хотите сохранить. Вы также никогда не должны настраивать строку вручную, как это. Используйте библиотечную функцию, такую как strlcpy, чтобы сделать это. Он автоматически добавит нулевой символ, даже если ваш массив слишком мал (путем усечения строки). В качестве альтернативы вы можете статически создать буквенную строку следующим образом:
char array[] = "abc";
Он автоматически обнуляется и имеет размер 4.