Al tener un error en strcpy “la dirección que apunta al espacio del código se toma”

#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 se declara como char . No puede copiar una cadena C "x" terminada en nulo en un solo char . Necesita una matriz char con al menos 2 miembros, o simplemente puede asignar un char (por ejemplo, 'x' ) a curr_vol_subvol_t si eso es lo que realmente desea.

Su curr_vol_subvol_t es un solo char , pero está intentando escribir un char[2] (es decir, { 'x', '\0' } ). No hagas eso Simplemente diga l->curr_vol_subvol_t = 'x'.