c数组问题sprintf
定义keycode[120][5]={"",“rew","123","qwerw","45678","waa"…………};charsz[256];在一个while循环里,...
定义keycode[120][5]={"",“rew","123","qwerw","45678","waa"…………};char sz[256];在一个while循环里,while(……){ sprintf(sz,"%s ",keycode[i]); //每次把keycode数组的值传给sz数组,并且连接成一个字符串。 //怎么用strcat()把每次的连接起来,可是strcat()的第二个参数是const类型啊。 i++;}函数不固定,只要是连接成一个长的字符串给sz就行,就像第一次是keycode[2],字符为123,第二次循环keycode[3]为qwerw最后传给sz的字符串是123qwerw这样。叙述的有点乱。求救
展开
展开全部
字符串是以为\0结束符的,那几个,"qwerw","45678",光是串长就有5了,带上结束符要占用6个字节,你定义的定长数组只有5个长度,所以是没有结束的假串,只能算是字符数组而不是串,不能用%s这样的操作,如果要用%s作串使用,必需是每个都有结束符的,
你要的如下:
char keycode[][6]={"",“rew","123","qwerw","45678","waa",};
//一维的下标必需是最长串+1,以保存能存结束符\0,或都不用定长串,全用指针
//二维下标可以省,用你实际初始化赋值的个数自动处理了
char sz[256]; //有空间但未初始化,第一个用strcpy()可以正常加进来
int i;
for(i = 1, strcpy(sz, keycode[0]); i<sizeof(*keycode) ; i++) strcat(sz, keycode[i]); //全部添加到sz中了
===========用指针不用二维定长数组
char* keycode[] = {"",“rew","123","qwerw","45678","waa",}; // 对一个指针数组初始化
char sz[256] = {0}; //必需初始化为0,下面就可以直接strcat添加进来,省了第一个strcpy()
for(int i = 0; i<sizeof(keycode) /sizeof(char*); i++) strcat(sz, keycode[i]);
你要的如下:
char keycode[][6]={"",“rew","123","qwerw","45678","waa",};
//一维的下标必需是最长串+1,以保存能存结束符\0,或都不用定长串,全用指针
//二维下标可以省,用你实际初始化赋值的个数自动处理了
char sz[256]; //有空间但未初始化,第一个用strcpy()可以正常加进来
int i;
for(i = 1, strcpy(sz, keycode[0]); i<sizeof(*keycode) ; i++) strcat(sz, keycode[i]); //全部添加到sz中了
===========用指针不用二维定长数组
char* keycode[] = {"",“rew","123","qwerw","45678","waa",}; // 对一个指针数组初始化
char sz[256] = {0}; //必需初始化为0,下面就可以直接strcat添加进来,省了第一个strcpy()
for(int i = 0; i<sizeof(keycode) /sizeof(char*); i++) strcat(sz, keycode[i]);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询