请高手帮我分析下下面这个程序,这个程序在VC6.0下可以正常运行,但在VS2005下就不正常。

这个程序是交换指定位置的字符串。#include<iostream>#include<string.h>#include<malloc.h>usingnamespaces... 这个程序是交换指定位置的字符串。
# include <iostream>
# include <string.h>
#include <malloc.h>
using namespace std;
void swap(char *src,int n,char *dst,int m);

char *temp_src;
char *temp_dst;
void main()
{
char *src = "teacher";
char *dst = "student";
cout<<"交换前:\n";
cout<<"src:\t"<<src<<endl;
cout<<"dst:\t"<<dst<<endl;
swap(src,3,dst,1);
cout<<"交换后:\n";
cout<<"src:\t"<<temp_src<<endl;
cout<<"dst:\t"<<temp_dst<<endl;
free(temp_src);
free(temp_dst);
getchar();
}

/*************************************************************
交换指定位置的字符串
n表示在src字符串中第n个字符开始和dst字符串中的第m个字符开始替换
**************************************************************/
void swap(char *src,int n,char *dst,int m)
{
int len,i,j;
i = n;
j = m;
int len_src = (int)strlen(src);
int len_dst = (int)strlen(dst);
/*
temp_src = (char *)malloc((n + len_dst - m)*sizeof(char));
temp_dst = (char *)malloc((m + len_src - n)*sizeof(char));*/
temp_src = (char *)malloc(9);
temp_dst = (char *)malloc(5);
for(len = 0;len < n;len++)
{
temp_src[len] = src[len];
}
for(len = 0;len < m;len++)
{
temp_dst[len] = dst[len];
}
for(len = m;len < len_dst;len++)
{
temp_src[i] = dst[len];
i++;
}
for(len = n;len < len_src;len++)
{
temp_dst[j] = src[len];
j++;
}
}
在VS2005下运行的结果如图所示,会出现乱码,VC6.0下就不会,这是为什么????
展开
 我来答
匿名用户
2011-06-22
展开全部
for(len = 0;len < n;len++)
{
temp_src[len] = src[len];
}
temp_src[len] = 0;
for(len = 0;len < m;len++)
{
temp_dst[len] = dst[len];
}
temp_dst[len] = 0;
for(len = m;len < len_dst;len++)
{
temp_src[i] = dst[len];
i++;
}
temp_src[i] = 0;
for(len = n;len < len_src;len++)
{
temp_dst[j] = src[len];
j++;
}
temp_dst[j] = 0;
cocopark1982
2011-06-22 · TA获得超过348个赞
知道小有建树答主
回答量:556
采纳率:0%
帮助的人:493万
展开全部
temp_src = (char *)malloc(10);
temp_dst = (char *)malloc(6);
temp_src[9] = 0;
temp_dst [5] = 0;

你要多分配 一个字节,存放字串的结束符 \0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weigetct706
2011-06-22 · 超过27用户采纳过TA的回答
知道答主
回答量:797
采纳率:0%
帮助的人:193万
展开全部
QQ微博一键登录取消后,性欲一小时,很多站长都后悔莫及,高弹力莱卡涂漆三点式,希望官方能够再开启一次,VIG-RX。恳请DZ给力啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式