strcpy和strcat出错

时间:2011-07-27 14:32:11

标签: c

我试图做的就是为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

3 个答案:

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