繁体   English   中英

从char数组中删除字符传递为C ++中的指针

[英]strip characters from char array pass as pointer in C++

关于如何从char数组中删除字符的任何建议都将作为C ++中的指针传递。 我必须使用memcpy函数进行复制。

void foo(char *test)
{
char a[1] = {0};
char b[1] = {0};
char c[1]= {0};

memcpy(&a,&test[0],1);
memcpy(&b,&test[1],1);
memcpy(&c,&test[2],1);

cout << a <<endl;
cout << b <<endl;
cout << c <<endl;
}

int main()
{
char uibuffer[4] = "ABC";
foo(uibuffer);
return 0;
}

当前输出为:

ABC��
BC��
C��

所需的输出是:

A
B
C
void foo(char *test)
{
/* Please note, you need to add one extra byte here for a terminator */
char a[2] = {0};
char b[2] = {0};
char c[2]= {0};

memcpy(&a,&test[0],1);
memcpy(&b,&test[1],1);
memcpy(&c,&test[2],1);

cout << a <<endl;
cout << b <<endl;
cout << c <<endl;
}

int main()
{
char uibuffer[4] = "ABC";
foo(uibuffer);
return 0;
}

要么

考虑通过摆脱数组和内存复制来改进代码。 简单的char a = buffer[x]可以解决问题。

由于您尚未创建\\ 0终止的字符串,因此请执行以下操作:

cout << a[0] <<endl;
cout << b[0] <<endl;
cout << c[0] <<endl;

不要将a,b和c做成数组。 可能不会编译而是进行说明。

void foo(char *test)
{
char a = 0;
char b = 0;
char c = 0;

memcpy(&a,&test[0],1);
memcpy(&b,&test[1],1);
memcpy(&c,&test[2],1);

cout << a <<endl;
cout << b <<endl;
cout << c <<endl;
}

int main()
{
char uibuffer[4] = "ABC";
foo(uibuffer);
return 0;
}

不要使它们成为数组:

char a = test[0];
char b = test[1];
char c = test[2];

如果需要,您仍然可以像现在一样使用memcpy。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM