我的目的是从无符号字符数组复制到无符号字符数组。下面的示例代码可以解释从无符号字符复制到无符号字符
#include <stdio.h>
#include <string.h>
typedef struct _demo
{
unsigned char something[6];
}demo;
typedef struct _Demo
{
demo d;
}Demo;
typedef struct _copy
{
unsigned char do_something[6];
}copy;
int main()
{
copy *c = new copy;
Demo d1;
for(int i = 0; i < 6; i++)
{
c->do_something[i] = i;
printf("%u", c->do_something[i]);
strncpy(d1.d.something[i], c->do_something[i], sizeof(d1.d.something));
}
return 0;
}
输出我得到的是:
In function 'int main()':
28:33: error: invalid conversion from 'unsigned char' to 'char*' [-fpermissive]
In file included from 2:0:
/usr/include/string.h:132:14: note: initializing argument 1 of 'char* strncpy(char*, const char*, size_t)'
extern char *strncpy (char *__restrict __dest,
^
28:53: error: invalid conversion from 'unsigned char' to 'const char*' [-fpermissive]
In file included from 2:0:
/usr/include/string.h:132:14: note: initializing argument 2 of 'char* strncpy(char*, const char*, size_t)'
extern char *strncpy (char *__restrict __dest,
我想避免:
d1.d.something[i] = c->do_something[i];
请建议如何进行........ ...
我看到'复制* C =新副本;在你的代码'。请注意,C和C++是不同的语言。 –
你用'd1.d.something [i]'作为参数调用strncpy,它是一个'char',而不是'char *'。 'strncpy'接受一个指针作为参数,而不是char。 –
我注意到David,但我想知道另一种方式 –