标题:为嘛又有乱码了??请砖家看看是程序的问题吗??
取消只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-441398-1-1.html




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

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