使用指标后数组未修改
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;
我在使用 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;