错误“'strcpy'从没有强制转换的整数生成指针”

时间:2013-07-23 06:53:15

标签: c compiler-errors

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的帖子我仍然无法编译。希望你可以引导我解决我的问题。谢谢。

2 个答案:

答案 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