问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用函数调用实现字符串的复制

发布网友 发布时间:2022-05-23 16:40

我来回答

5个回答

热心网友 时间:2023-10-29 18:02

个人见解:
for (; *from!='\0';from++,to++) //这foe循环出错了,
*to=*from;
都知道指针指向对象保存的内存地址的
例如: char *p = "abc";
p是指向对象的地址,数组则是指向首地址,为什么?因为数组在内存中是连续存储的,每个元素都有自己的内存地址。知道这些就行,然后看 char *p = "abc" 。一开始我是这样想的,指针p是指向字符串中的第一个元素a。其实这样是错的!正确的是p是指向字符串abc在内存中的地址,也就是说abc在同一个内存地址上。这样想就解决了lz这个程序中的问题。在lz的循环中,让两个指针from&to自增,虽然循环第一次没有报错,但是得到的结果也不会是lz想要的正确结果,而循环第二次执行时,由于指针自增,指向了非form&to的地址了,也就是指针P想要修改其他内存的地址。

#include <iostream>
using namespace std;

void copy_string ( char *&from, char *&to)
{
to = from;
/*
for (; *from!='\0';from++,to++)
*to=*from;
*to='\0';*/
}

main()
{
char *a="I am teacher";
char *b="you are a student";
printf ("\n string a=%s \t string b=%s \n",a,b);
copy_string(a,b);
//下面的printf你再检查下,
//printf ("\n string a=%s \t string b=%S \n",a,b);
//用cout输出没问题
cout<<"string a = "<<a<<"\t"
<<"string b = "<<b<<endl;
}

热心网友 时间:2023-10-29 18:02

因为a 和 b都是const char *型(字符串常量),如果要将a复制到b内,需要将b定义为char b[100]这样。
比如:char a[100]="I am teacher";
char b[100]="you are a student";
copy_string(a,b);追问按你说的改过后编译运行的结果仍然不对。。

追答第一:你必须把第二个printf里的大写S改成小写s。第二:如果你是在windows的IDE下编程,请把main写成int main(void),在程序结尾处(大括号内)加上getchar(); return 0;因为windows下IDE环境下如果没有死循环或者输入函数,执行完毕后是看不到那个黑色窗口的。

那是因为你没有添加头文件。
你要在代码的最前面加上
#include

热心网友 时间:2023-10-29 18:03

1.把char *b="you are a student"改为char b[50]="you are a student";
2.把最后一句printf ("\n string a=%s \t string b=%S \n",a,b)中的%S改为%s(s小写)。
这样一切OK!

热心网友 时间:2023-10-29 18:03

按照你原来的程序,只要将后面一句大写的S改为小写就行。不过那个for循环,你要确认没有加大括号才行。

热心网友 时间:2023-10-29 18:04

char * copy_string(char * to,const char * from);
{
if ((to==NULL)||(from==NULL)) //确保输入无措,否则抛异常
{ printf("Error Input!"); exit(1);}
char * strDestCopy=to; //保存原始的指针地址
while ((*to++=*from++)!='\0');
return strDestCopy;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
晒的龙眼被雨淋湿能用空气锅烘干吗 安顺龙眼烘干机 河北玻璃钢冷却塔多少钱 冷却塔价格一般多少 玻璃钢冷却塔多少钱 冷却塔多少钱一台?怎样进行冷却塔选型? 冷却塔多少钱一套 冷却塔价格和什么有关 ...左右吃早饭和4点左右吃晚上每天2顿饭对身体好么,还有我10点吃... 北外网院课程免考条件是什么 北外网院网络教学平台app10北外网院网络教学平台 C#中的字符串复制函数是什么? 给孩子起名,父亲姓武。叫什么名字比较好听,帮帮忙 前任微信拉黑后又放出来,什么心态? 昨天男朋友提分手,删了我拉黑又解黑。苦苦哀求又加回微信。他觉得是不信任老猜疑他,现在该怎么做? 编写函数strcpy实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,形成一个新字符串? 控制阀维修办法主要有哪些 ipad控制屏幕不好使怎么回事?武汉金银潭有维修中心吗? 请问我要学习维修电动车控制器,有什么资料啊 极品飞车9怎么进不了维修站了 昨天男友和我分手,微信删除拉黑又解黑,苦苦哀求今日重新加回。我很想把握这次机会,该怎么做? 听老人说宝宝很好动是因为怀孕的时候吃了猪尾巴,是真的吗 大家好!山东新东方烹饪职业学校怎么样 啊!急!有知情者请告诉我!谢谢! 山东新东方烹饪学校都有哪些专业啊? 女友把我拉黑又拉出来无论怎么哄道歉也不理我,我该怎么办?? 青岛烹饪职业学校? 手机淘宝在哪可以扫同款 手机反应慢能到维修部做升级处理吗 生产中的维修物料是如何领用和控制的? 想学电动车控制器维修 维修部门是重点岗位吗 本月出生的女孩,爸爸姓武,妈妈姓周,该起什么名字呢 我的孩子是今年9月14日06:15出生,男孩,父亲姓武,取什么名字比较好? 青岛市户口迁入需要什么资料 兔年爸爸姓武,妈妈姓李,为男宝宝取个名字。 华为手机说sd卡受损,让我格式化,可我格式化完了之后还是受损,可安 爸爸姓武,妈妈姓樊,想给女儿起个名字叫武樊什么,最好四个字。希望能帮帮忙。非常感谢。。 2011年阳历5月30号上午10点出生的男孩,爸爸姓武,妈妈姓刘,取什么名字好 手机突然出现SD卡受损 帮忙起个名字,父姓武,生于2011.5.17凌晨5点.女孩 爸爸姓武,妈妈姓潘。请大家给起个名!(要有五行之说)谢谢了!!! 孩子已经出生13天!各位大哥帮忙给起个名字吧!父亲姓武!我是母亲姓王!谢谢了!!!! 2012年农历闰四月二十一19点32的女孩五行缺什么,父亲姓武,取什么名字好? 怎么查有哪些股票有高转送的 在哪里可以看到那些高送转的股票 哪里可以第一时间查到高送转股票? 怎样在股票软件上查高送转那些股票? powerbeats2有有线款吗? 天津一清理积雪的环卫工人引起了过路男子的不满,环卫工对此是如何回应的? 天津一男子因不满环卫工清理积雪的方式而对其怒骂,你如何看待男子的做法? powerbeats2无限耳机怎么样