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

#pragma inspect, symbols #pragma nolist #pragma ENV LIBSPACE #include  #include  #include  #include  #include  #include  #include  #include  #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被声明为char 。 您不能将以null结尾的C字符串"x"复制到单个char 。 你需要一个至少有2个成员的char数组,或者你可以只为curr_vol_subvol_t分配一个char (例如'x' ),如果这是你真正想要的。

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