関数に渡すために変換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 CIでは、それがうまくいくはずだと信じています。
#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);
}