使用指标后数组未修改

Array didn't modified after doing work with indicator

我在使用 C++ 中的指示器时遇到了一些问题。我编写了调用函数的程序 - 它的任务是在数组中包含的 c 字符串(地址作为参数发送)之前添加 c 字符串 "UWAGA: "。如果该 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;
}

传递数组作为参考

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

可能你需要在复制前回滚指针:

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

return poczatek;