Строка - это просто набор символов. Не больше и не меньше. Исходя из этой природы в Си строка - это обычный массив символов, заканчивающийся символом ”(проще говоря, нулем). Язык не имеет встроеннных средств по работе со строками и предполагает наличие внешней библиотеки для их обработки. Стандартная библиотека языка содержит такой набор функций, они хорошо описаны на различных сайтах. Здесь же я буду освещать только особенности строк как таковых.

1. Программист сам должен контролировать завершающий ноль. Ни язык, ни система не проверяют его наличие. А отстусвие завершающего символа чаще всего приводит к краху Вашей программы.
Поэтому Вам необходимо детально изучить строковые функции с которыми придется работать.

Например, есть процедурка strncpy которая копирует некоторое количество символов из одной строки в другую. Так вот, копирукются только символы, завершающий нолик ставить надо самому.

2. Память под строки выделять нужно самостоятельно и вручную. Язык не производит абсолютно никакого контроля за размером строки(как и за размером массива в целом). Поэтому, прежде чем склеить 2 строки в одну, проверьте, хватит ли вам места в результирующей строке.

3. Большинство стандартных функций работают со строками посимвольно. Например, strlen для определения длины строки перебирает все символы пока на ее пути не встретится завершающий нолик. Поэтому не злоупотребляйте одинаковыми вызовами, а просто запоминайте промежуточные результаты для последующего использования.

4. Иногда страндартных функций бывает недостаточно, приходится писать свои обработчики строк. Так вот, злоупотребление набором вызовов стандратных функций может резко понизить эффективность Вашей программы, разложите алгоритм по пальцах и попробуйте реализовать его самостоятельно, без использования чужих реализаций. Но эффективность такого решения не всегда выше, поэтому прежде чем делать, хорошенько подумайте.