从无符号const char*到char const*的类型转换
Type cast from unsigned const char * to char const *
我想将unsigned const char *
转换为char const *
,以便传递到strcpy
函数
请建议一些方法
(const char *) my_signed_char
在C++中,有更惯用的方法来转换它,但由于您使用的是strcpy,所以您似乎没有编程惯用的C++。
这对我有效;这是你想的吗?
#include <stdio.h>
#include <string.h>
int main(int argc, char ** argv)
{
const char foo[] = "foo";
unsigned const char * x = (unsigned const char *) foo;
char bar[20];
strcpy(bar, (const char *)x);
printf("bar=[%s]n", bar);
return 0;
}
请注意,如果您试图将(unsigned const char*)指针传递到strcpy的第一个参数中,那么您可能正在尝试做一些不应该做的事情(编译器将其标记为错误是正确的);因为strcpy()将写入其第一个参数所指向的内存,而const指针是其数据不应写入的指针。
在ANSI C中,我认为它应该只起作用,例如:
#include <string.h>
int main() {
const char *s="test";
unsigned const char *d = s;
char dest[1000];
strcpy(dest,d);
}
你可以尝试添加一个演员阵容:
#include <string.h>
int main() {
const char *s="test";
unsigned const char *d = s;
char dest[1000];
strcpy(dest,(const char *) d);
}