4

関数に渡すために変換unsigned const char *したいchar const *strcpy

いくつかの方法を提案してください

4

3 に答える 3

7
(const char *) my_signed_char

C ++では、これをキャストするためのより慣用的な方法がありますが、strcpyを使用しているため、慣用的なC++をプログラミングしていないようです。

于 2013-02-20T06:44:00.270 に答える
1

これは私にとってはうまくいきます。それはあなたが考えていたものですか?

#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ポインタはデータを書き込まないポインタであるためです。

于 2013-02-20T06:36:12.093 に答える
1

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);
}
于 2013-02-20T06:39:49.010 に答える