Нет переменных с именами str1
и str2
, поэтому я предполагаю, что вы имели в виду ptr1
и ptr2
.
Вы никогда не присваиваете этим переменным что-либо, поэтому у них нет оснований для изменения их первоначальных значений. Я думаю, это то, что вы намеревались:
char *strs[] = { "string1", "string2", NULL };
char *ptr1 = NULL, *ptr2 = NULL, **tmp;
short iter = 0;
tmp = &ptr1;
while (iter < 2)
{
*tmp = strdup(strs[iter]);
tmp = &ptr2;
iter++;
}
printf("1: %s\n2: %s\n", ptr1, ptr2);
Однако это довольно странный кусок кода. Чего вы на самом деле пытаетесь достичь? Там может быть более элегантное решение.