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这样。叙述的有点乱。求救   展开
 我来答
靓丽还清湛的标兵5177
2011-12-07 · TA获得超过1649个赞
知道小有建树答主
回答量:1032
采纳率:100%
帮助的人:973万
展开全部
字符串是以为\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]);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenqa08
2011-12-07 · TA获得超过275个赞
知道答主
回答量:105
采纳率:0%
帮助的人:109万
展开全部
1、你非常毛躁,这样提问有谁会认真回答你呢?你都不认真,那别人就更不会认真回答你的问题了。
2、建议你认真的把二维数组、指针和指针数组的定义和初始化看一看!不会走就别急着跑。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式