| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 482 人关注过本帖
标题:为嘛又有乱码了??请砖家看看是程序的问题吗??
取消只看楼主 加入收藏
lymig2011
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2015-1-21
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
为嘛又有乱码了??请砖家看看是程序的问题吗??
如题,程序如下:编译没错,运行出现乱码
图片附件: 游客没有浏览图片的权限,请 登录注册

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

char* Strcat(char *str1,char *str2)
{
    int size_str1,size_str2;
    size_str1=sizeof(str1);
    size_str2=sizeof(str2);

    int size=size_str1+size_str2;

    char* tempt=(char*)malloc(sizeof(size));//为两个字符串合并申请内存空间
    char* result=tempt;

    while(*str1!='\0')
    {
        *tempt=*str1;
        tempt++;
        str1++;
    }

    while(*str2!='\0')
    {
        *tempt=*str2;
        tempt++;
        str2++;
    }
    *tempt+='\0';
    return result;

}

int main()
{
    char* a="Hello";
    char* b=",everyone!";
   
    printf("string a=%s\n",a);
    printf("string b=%s\n",b);

    printf("字符串连接后为:\n");
    printf("%s\n",Strcat(a,b));
   

    system("pause");

    return 0;
}
搜索更多相关主题的帖子: include result 字符串 空间 
2015-01-23 21:39
lymig2011
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2015-1-21
收藏
得分:0 
以下是引用wmf2014在2015-1-23 22:11:07的发言:

 size_str1=sizeof(str1);
在函数里sizeeof指针参数长度只会得到你cpu的地址位数所占用的字节数,16位为2,32位为4,64位为8,所以你不能通过该指令获取字符串长度,这样你申请的动态字串空间和实际的字符串长度不等就会出现乱码。你必须通过探测字符串结束符\n来获取字符串实际长度。

sizeof得到的不是变量所占的字节数吗?
2015-01-23 22:21
lymig2011
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2015-1-21
收藏
得分:0 
以下是引用诸葛欧阳在2015-1-23 22:23:02的发言:

    char* tempt=(char*)malloc(sizeof(size))这句也不对,括号里放入字节数就可以了,你的sizeof(size)应该等于4(因为size为整型站四个字节,相当于sizeof(int))

好像是这么回事
那要计算两个字符串的长度应该怎么写??
2015-01-23 22:52
快速回复:为嘛又有乱码了??请砖家看看是程序的问题吗??
数据加载中...
 
   



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

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