[英]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.