其上的strcpy&QUOT一个错误;地址为code空间定位是采取" [英] Having an error on strcpy "address pointing at code space is taken"

查看:119
本文介绍了其上的strcpy&QUOT一个错误;地址为code空间定位是采取"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 的#pragma检查,符号  NOLIST的#pragma  ENV的#pragma LIBSPACE  #包括LT&;&stdio.h中GT;  #包括LT&;&string.h中GT;  #包括LT&;&tal.h GT;  #包括<cextdecs(FILE_OPEN_,FILE_CLOSE_,FILE_GETINFO_,FILENAME_DECOMPOSE_,WRITEX,READX,FILE_SETKEY_,WRITEUPDATEX,FILENAME_RESOLVE_,FILE_SETPOSITION_,PROCESS_GETINFOLIST_,USER_GETINFO_,FILENAME_MATCH_)>  #包括LT&;&fcntl.h GT;  #包括LT&;&stdlib.h中GT;  #包括LT&;&STDDEF.H GT;  #包括LT&;&文件ctype.h GT;    #包括$ SYSTEM.ZSYSDEFS.ZSYSC(filename_constant,process_item codeS) 名单的#pragma   / *变量* /          为const char program_id_DB [] =CSRTST;
          为const char program_name_DB_c [ZSYS_VAL_LEN_FILENAME] = {$ DSMSCM.CSR.CSRTST};
/ * process命令功能* /processCMD(字符字符串[])
{
结构local_stack_def {        _cc_status CC;
        CHAR command_E [30];
        焦炭DataEntry [200];
        焦炭user_id_E [200];
        焦炭curr_vol_subvol [ZSYS_VAL_LEN_FILENAME]
        焦炭program_name_DB [ZSYS_VAL_LEN_FILENAME]
        短ret_attr_count;
        短ret_values​​_maxlen;
        短user_maxlen;
        焦炭curr_vol_subvol_t;
        INT t,J,VAL1,val2中,VAL3;
        总之user_curlen,piece_length,fullname_length;
        总之fpointer,错误,resultFD,resultFM,resultUGI,resultGIL,resultFR,ret_val_length;
        工会{
                   长id_32;
                   短id_16 [2];
                  } 用户名;
        结构{
                 短期支付;
                 短prgm_len;
                 焦炭prgm_name_E [ZSYS_VAL_LEN_FILENAME]
                   } ret_vals;         结构{
           焦炭VAL [20];
        } command_DB [2];
         结构{
           焦炭VAL4 [50];
        } user_id_DB [2];
        短attr_listX [2];
};结构local_stack_def l_temp;
结构local_stack_def * L =安培; l_temp;的strcpy(安培; 1→curr_vol_subvol_t,×);


解决方案

curr_vol_subvol_t 声明为字符。您不能复制一个空值终止的C字符串×成一个单一的字符。您需要至少有2名委员字符阵列,或者你可以指定一个字符(如'X')以 curr_vol_subvol_t 如果这是你真正想要的。

  #pragma inspect, symbols

  #pragma nolist

  #pragma ENV LIBSPACE

  #include <stdio.h>

  #include <string.h>

  #include <tal.h>

  #include <cextdecs(FILE_OPEN_,FILE_CLOSE_,FILE_GETINFO_,FILENAME_DECOMPOSE_,WRITEX,READX,FILE_SETKEY_,WRITEUPDATEX,FILENAME_RESOLVE_,FILE_SETPOSITION_,PROCESS_GETINFOLIST_,USER_GETINFO_,FILENAME_MATCH_)>

  #include <fcntl.h>

  #include <stdlib.h>

  #include <stddef.h>

  #include <ctype.h>

    #include "$SYSTEM.ZSYSDEFS.ZSYSC (filename_constant,process_itemcodes)"

 #pragma list

   /*VARIABLES*/

          const char program_id_DB[] = "CSRTST";
          const char program_name_DB_c[ZSYS_VAL_LEN_FILENAME] = {"$DSMSCM.CSR.CSRTST"};


/*PROCESS COMMAND FUNCTION*/

processCMD(char string[])
{


struct local_stack_def{

        _cc_status cc;
        char command_E[30];
        char DataEntry[200];
        char  user_id_E[200];
        char curr_vol_subvol[ZSYS_VAL_LEN_FILENAME];
        char program_name_DB[ZSYS_VAL_LEN_FILENAME];
        short ret_attr_count;
        short ret_values_maxlen;
        short user_maxlen;
        char curr_vol_subvol_t;
        int x, j, val1, val2, val3;
        short user_curlen, piece_length, fullname_length;
        short fpointer, error, resultFD,resultFM, resultUGI,resultGIL, resultFR,ret_val_length;
        union {
                   long  id_32;
                   short id_16[2];
                  } user_id;
        struct {
                 short paid;
                 short prgm_len;
                 char  prgm_name_E[ZSYS_VAL_LEN_FILENAME];
                   } ret_vals;

         struct {
           char val[20];
        } command_DB[2];
         struct {
           char val4[50];
        } user_id_DB[2];


        short attr_listX[2];
};

struct local_stack_def l_temp;
struct local_stack_def *l = &l_temp;

strcpy(&l->curr_vol_subvol_t,"x");

解决方案

curr_vol_subvol_t is declared to be char. You can't copy a null-terminated C string "x" into a single char. You need a char array with at least 2 members, or you can just assign a char (e.g. 'x') to curr_vol_subvol_t if that's what you really want.

这篇关于其上的strcpy&QUOT一个错误;地址为code空间定位是采取&QUOT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆