У вас есть три проблемы здесь.Во-первых, temp
недостаточно велик, чтобы содержать строку «начало».Строки в C заканчиваются нулем, так что эта строка на самом деле занимает 6 байтов, а не 5. Поэтому сделайте temp
достаточно большим, чтобы вместить эту строку:
char temp[6] = "begin";
Или еще лучше:
char temp[] = "begin";
Какой размер массива соответствует размеру строки.Вторая проблема здесь:
temp_list[0] = temp;
Вы присваиваете массив (фактически указатель на первый элемент массива) первому элементу другого массива.Это несоответствие типов присвоения char *
char
.Даже если типы совпадают, строки копируются не так.Для этого используйте функцию strcpy
:
strcpy(temp_list, temp);
Наконец, вы неправильно печатаете результат:
for (int i = 0; i < strlen(temp_list); i++)
{
printf("Labels: %s,", temp_list[i]);
}
Спецификатор формата %s
ожидает указатель наchar
массив для печати строки, но вы передаете один символ.Несоответствие спецификаторов формата вызывает неопределенное поведение .
Для печати одиночных символов используйте %c
вместо:
for (int i = 0; i < strlen(temp_list); i++)
{
printf("Labels: %c,", temp_list[i]);
}
Или вы можете избавиться от цикла и просто напечататьвся строка, используя %s
:
printf("Labels: %s", temp_list);