| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1390 人关注过本帖
标题:使用 strcat 遇到一个匪夷所思的问题
只看楼主 加入收藏
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
结帖率:88.89%
收藏
已结贴  问题点数:10 回复次数:31 
使用 strcat 遇到一个匪夷所思的问题
在程序中声明了四个字符串如:
char   ver[23 + 25] = "(初始赋给22个字符)"
char   seq[25]
char   mm[16] = "(初始赋给14个字符)“
char   ps[33 + 5] = "(初始赋给4个字符)”
char   buf[33]

fun(seq)   /* 把24字节数据装入seq中*/
fun2(buf)   /* 把32字节装入buf中*/

然后调用strcat
1、strcat(ver,seq)
2、strcat(ps, buf)
执行完第一步printf出mm的值没有变,执行完第二步printf出mm的值为空。ps的值是正确的。
然后调试了一下发现执行第一步后mm在内存中的值为
“ABABABABABABAB\00"
执行第二步后mm在内存中的值为
“\000BABABABABABAB\000"     /* 字符串头多了“\000"并覆盖掉了第一个‘A’*/
我觉得是第二个strcat在操作数据段时出的问题,于是将上面的声明改为ps声明在mm之前,如下
char   ps[33 + 5] = "(初始赋给4个字符)”
char   mm[16] = "(初始赋给14个字符)“

问题就不再出现了。但我现在还不知道是什么问题?大家觉得是什么问题?
先去吃饭现。。。。。
搜索更多相关主题的帖子: 字符串 
2014-07-17 12:39
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:5 
你代码问题,上代码吧

总有那身价贱的人给作业贴回复完整的代码
2014-07-17 12:49
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 2 楼 embed_xuel
程序代码:
/* Http protocol command string */
    char    ver[23 + 25] = "VER=1.1&CMD=Login&SEQ=";
    char    seq[25];
    char    uin[MAXNAME + 5] = "&UIN=835907249";
    char    ps[33 + 6] = "&PS=";
    char    m5[27] = "&M5=1&LC=9326B87B234E7235";

strcat(ver, seq);
    printf("UIN: %s\n", uin);
    strcat(ps, encryptpwd);
    printf("UIN: %s\n", uin);
2014-07-17 13:30
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 3 楼 锋了
这是为了在连接一个http协议字符串。

随便问一下版主,如何实现发送http协议和接收返回呢?
我刚学网络编程,已经成功连接,我使用write将这个http协议写到套接字中,但是没有返回相应的http协议
2014-07-17 13:35
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
以下是引用锋了在2014-7-17 13:30:17的发言:

/* Http protocol command string */
    char    ver[23 + 25] = "VER=1.1&CMD=Login&SEQ=";
    char    seq[25];
    char    uin[MAXNAME + 5] = "&UIN=835907249";
    char    ps[33 + 6] = "&PS=";
    char    m5[27] = "&M5=1&LC=9326B87B234E7235";

strcat(ver, seq);
    printf("UIN: %s\n", uin);
    strcat(ps, encryptpwd);
    printf("UIN: %s\n", uin);


麻烦贴点能运行(最低也能编译通过的)的代码

DO IT YOURSELF !
2014-07-17 13:45
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 5 楼 wp231957
代码看不出来的话想运行自己加点就可以编译运行了吧,这么简单的代码
2014-07-17 13:48
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
1、seq没有初始化
2、1楼说的mm[16]对应3楼的代码是哪个?

总有那身价贱的人给作业贴回复完整的代码
2014-07-17 13:51
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 7 楼 embed_xuel
一楼的代码和这里是不一样的,那是给个大概样子而已。seq赋值代码有点长没有贴出。mm对应的是uin
2014-07-17 13:57
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
把seq赋值代码贴出来

总有那身价贱的人给作业贴回复完整的代码
2014-07-17 13:59
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 8 楼 锋了
MAXNAME大小是11
2014-07-17 13:59
快速回复:使用 strcat 遇到一个匪夷所思的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033537 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved