Массив не изменился после выполнения работы с индикатором

У меня есть некоторые проблемы с индикатором в C ++. Я написал программу, которая вызывает функцию — ее задача заключается в добавлении c-строки «UWAGA:» перед тем, как c-строка включается в массив (какой адрес отправляется в качестве аргумента). Если длина этой c-строки превышает размер табуляции, она должна изменить последние три знака на «.» знак.
Он работает, когда я пытался напечатать указатель twsk, но не изменяет содержимое tab []. КСТАТИ. внутри моей функции, когда я печатал индикатор w, он показывает только первичную c-строку. Может кто-нибудь сказать мне, почему он не изменяет мой массив вкладок?

PS. Извините за мой английский.

#include <iostream>
#include <cstring>

using namespace std;

char * dopisywacz(char *w, int size);

int main()
{
int size = 50;
char  tab[size] = {"jakis c-string."};

cout << dopisywacz(tab, size) << endl;

}

char * dopisywacz(char *w, int size)
{
char *poczatek = w;
char str[] = {"UWAGA: "};
int dlugosc = strlen(w);
char  temp[size];
char *twsk = temp, *tpocz = twsk;

int counter = 7;for (int i = 0; i < 7; i++)
{
*twsk++ = str[i];
}

while(*temp)
{
*twsk++ = *w++;
counter++;

if (counter == size)
{
*twsk -= 4;
for (int i = 0; i < 3; i++)
{
*twsk++ = '.';
}
break;
}
}
*twsk = 0;

twsk = tpocz;
while (*(w) = *(twsk))
{
w++;
twsk++;
}
w = poczatek;

return w;
}

0

Решение

Вероятно, вам нужно откатить указатель перед копированием:

w = poczatek; // Restore pointer to initial position
while (*(w) = *(twsk))
{
w++;
twsk++;
}

return poczatek;
0

Другие решения

Передать массив как ссылку

char * dopisywacz(char*& w, int size);
0

По вопросам рекламы [email protected]