Я пытаюсь написать код для преобразования строки в массив указателей, каждый указатель указывает на слово в этой строке. когда я компилирую код ниже и печатаю каждое слово отдельно в первом цикле, я получаю каждое слово в порядке, но после завершения цикла, а затем я пытаюсь напечатать каждое слово в массиве через цикл, все элементы массива будут такими же, это последнее слово в строке.преобразование строки в массив указателей на символы
Если мы прошли «AB CD EF» для этой функции, последний цикл будет печатать
ef then ef then ef
но если я печатаю каждый элемент массива в первом цикле он будет печатать
ab then cd then ef
Код
void sort(char* str)
{
char* a[100]={NULL};
char *tStr2,*min,*temp;
tStr2=(char*)malloc(strlen(str));
int i=0,i2=0,j=0;
while(i<=strlen(str))
{
if(str[i]!=' ' && i!=strlen(str))
{
tStr2[i2]=str[i]; //copy every word separately to tStr2[]
i2++;
}
else
{
tStr2[i2]=NULL;
a[j]=tStr2; //word is complete --> copy it to the array
printf("%s \n",a[j]); //print every word
j++;
i2=0; //initializes the word counter
}
i++;
}
i=0;
for (i=0;a[i];i++) //loop is complete , print all array elements
printf("%s \n",*a[i]);
}
'std :: string' и' std :: vector' и 'std :: stringstream' являются вашими друзьями здесь. – NathanOliver
Это C или C++? –
1) C не C++ не C. 2) Выберите один из них 3) Отформатируйте код. Он не читается. – Olaf