В C строка записывается в двойных кавычках.
Пример "abc"
является строкой.
В strcat()
вы должны передать указатели dst и str, указывающие на строку.
В строке # 2 вы правильно используете strcat()
. строка - указатель на массив символов, а " "
- указатель на строковый литерал.
Но в строке # 3 '196'
не является строкой. Если вы хотите записать 196 в строку, это должно быть strcat(line, "196");
То же самое относится и к строке № 4.
Обратите внимание на следующее.
- В строке # 1 вы просто объявляете массив символов, а не инициализируете его. Так что он может содержать что угодно. Таким образом, ваш strcat в строке # 2 может начинаться вне массива, даже если в выделенном массиве нет символа '\ 0'. Так что лучше его инициализировать -
char line[50] = ""
;
- Относительно строки № 2 и строки № 3: если вам нужен непрерывный символ 146, вы можете выполнить одно из следующих действий:
for(..,i < MAX-1,..) line[i]=196; line[i+1]='\0';
ИЛИ for(..,i < MAX-1,..) strcat(line, "_"/* Assuming this is the character for 196*/);