在strcpy“地址指向代码空间时出错”

时间:2011-07-04 13:59:44

标签: c

  #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");

2 个答案:

答案 0 :(得分:0)

curr_vol_subvol_t被声明为char。您不能将以null结尾的C字符串"x"复制到单个char中。您需要一个至少包含2位成员的char数组,或者您只需将char(例如'x')分配给curr_vol_subvol_t,如果这是您真正想要的。

答案 1 :(得分:0)

您的curr_vol_subvol_t是一个char,但您正在尝试向其中写char[2](即{ 'x', '\0' })。不要那样做。只需说l->curr_vol_subvol_t = 'x'.