我试图做的就是为strcpy添加一个字符串并用short连接。但我得到两个错误,代码在
下面struct local_stack_def
{
char *result;
char delims[3];
char user_id_E[200];
short user_maxlen, range_eulm, imp_eulm, len_eulm;
char msg_eulm[400];
/*MORE VARIABLE REMOVED TO SHORTEN LENGTH*/
};
short pool_err;
struct local_stack_def *l;
l = POOL_GETSPACE_(i_exit_cb->Pool_addr,sizeof(struct local_stack_def),&pool_err );
/*MORE VARIABLE REMOVED TO SHORTEN LENGTH*/
if (l->resultFR != 0)
{
l->range_eulm= 1501;
strcpy(l->msg_eulm,"FILENAME_RESOLVE_ ERROR - ERROR#:");
strcat(l->msg_eulm, l->resultFR);
使用strcpy和strcat我会收到这些错误
strcpy(l->msg_eulm,"FILENAME_RESOLVE_ ERROR - ERROR#:");
Warning 207: address pointing at code space is taken
strcat(l->msg_eulm, l->resultFR);
Warning 86: argument 2 conflicts with formal definition
答案 0 :(得分:1)
这两个函数都适用于char*
类型。
在您定义的某个常量字符串上使用strcpy
时,此字符串位于代码空间中,这可能是一个问题,因此会出现警告。
导致第二个错误,因为您无法将整数连接到字符串。
当您想要打印此短片的值时,您需要将其转换为例如通过sprintf转换为char*
,然后将其转换为char*
。
答案 1 :(得分:1)
您未提供有关resultFR
的信息(显然不是const char*
)。
您也没有提供有关您正在使用的编译器的信息,但是没有提供有关Web上的文档的信息:
警告207:获取驻留在代码空间中的对象的地址。使用此地址仅在与对象相同的代码段内有效。
答案 2 :(得分:1)
对于连接,您需要使用itoa(或其中一个变体)
strcat(l->msg_eulm, itoa(l->resultFR));
如果你在c库中没有itoa那么你可以使用snprintf.OR查找另一个带数字的函数并返回一个char *