其上的strcpy&QUOT一个错误;地址为code空间定位是采取" [英] Having an error on strcpy "address pointing at code space is taken"
本文介绍了其上的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屋!
查看全文