struct PhaseShiftPin {
int _PSPpin_index; //PSP = Phase Shift Pin
int _PSPvalue;
char _PSPname[512];
};
struct PhaseShiftPin *_PhaseShiftPin[500000];
int p3int = 0;
strcpy ( _PhaseShiftPin[i]->_PSPvalue, p3int );
上面的代码只是我完整代码的一部分。 当我编译我的完整程序时发生错误 strcpy'从整数中生成指针而没有强制转换 在线
strcpy ( _PhaseShiftPin[i]->_PSPvalue, p3int );
在我尝试使用strncpy并按照帖子中显示的方法后,我在这里提到了makes pointer from integer without a cast with strcpy的帖子我仍然无法编译。希望你可以引导我解决我的问题。谢谢。
答案 0 :(得分:2)
strcpy
不适合此问题。它需要两个参数。第一个是指向char
的指针,第二个是指向const char
的指针。然后它将第二个指针指向的字符串复制到第一个指向的内存中。
在您的情况下,您没有复制字符串,而是复制int。你的最后一行应该是:
_PhaseShiftPin[i]->_PSPvalue = p3int;
但是,C99标准保留以下划线(' _')开头的标识符,后跟大写字母或实现的另一个下划线。因此,您不能以这种方式命名您的标识符。
答案 1 :(得分:1)
如果你看一下strcpy的定义,你可以看到
char *strcpy(char *dest, const char *src);
但您的_PhaseShiftPin[i]->_PSPvalue
是一个整数,p3int
也是。
你可以使用memcpy
void *memcpy(void *dest, const void *src, size_t n);
strcpy ( &(_PhaseShiftPin[i]->_PSPvalue), &(p3int), sizeof(p3int) );
或者只是在评论中说的
_PhaseShiftPin[i]->_PSPvalue = p3int;
如果您尝试将p3int
复制到_PhaseShiftPin[i]->_PSPvalue