| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 548 人关注过本帖
标题:请教关于字符串复制
只看楼主 加入收藏
meiling01
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-2
收藏
 问题点数:0 回复次数:9 
请教关于字符串复制
#include"stdio.h"
void copy_string(char *from,char *to)
{while ((*to=*from)!='\0')
{to++;from++;}

}

main()
{
char *a= "I am a teacher.";
char *b= "you are a student.";
printf("string_a=%s\nstring_b=%s\n",a,b);
copy_string(a,b);
printf("\nstring_a=%s\nstring_b=%s\n",a,b);
return 0;
}
我没有直接利用字符串函数,而是自己写了一个,没有错误了,却总是不能正确运行,请高手指点,谢谢!
搜索更多相关主题的帖子: 字符 
2006-12-05 15:19
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
include"stdio.h"
void copy_string(char *from,char *to)
{while ((*to=*from)!='\0')
{to++;from++;}

}

已经改变了to的地址,要复位.还有就是最后一个字符要赋上'\0';

倚天照海花无数,流水高山心自知。
2006-12-05 15:41
meiling01
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-2
收藏
得分:0 
根据版主的提示,我改为:可是程序仍然不能运行阿!
#include"stdio.h"
void copy_string(char *from,char *to)
{ char *p,*q;
p=from;
q=to;
while ((*to=*from)!='\0')
{to++;from++;}
*to='\0';
from=p;to=q;
}

main()
{
char *a= "I am a teacher.";
char *b= "you are a student.";
printf("string_a=%s\nstring_b=%s\n",a,b);
copy_string(a,b);
printf("\nstring_a=%s\nstring_b=%s\n",a,b);
return 0;
}
2006-12-05 15:53
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
#include"stdio.h"
void copy_string(char *from,char *to)
{
int i=0;
while ((*(to+i)=*from)!='\0')
{
i++;from++;
}
*(to+i)='\0';
}

倚天照海花无数,流水高山心自知。
2006-12-05 16:09
meiling01
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-2
收藏
得分:0 
请问版主:
我编的程序有何问题呢,恳请您指点!谢谢您。
2006-12-05 16:14
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
以下是引用meiling01在2006-12-5 15:19:00的发言:
#include"stdio.h"
void copy_string(char *from,char *to)
{while ((*to=*from)!='\0')
{to++;from++;}

}

main()
{
char *a= "I am a teacher.";
char *b= "you are a student.";
printf("string_a=%s\nstring_b=%s\n",a,b);
copy_string(a,b);
printf("\nstring_a=%s\nstring_b=%s\n",a,b);
return 0;
}
我没有直接利用字符串函数,而是自己写了一个,没有错误了,却总是不能正确运行,请高手指点,谢谢!

函数没问题,
关键是char *a= "I am a teacher.";
char *b= "you are a student.";
这两句,在很多编译器中,都当成字符串常量,不允许改变.
建议改为:
char a[100]= "I am a teacher.";
char b[100]= "you are a student.";


2006-12-05 16:15
meiling01
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-2
收藏
得分:0 
请问版主:我程序改成这样了:
#include"stdio.h"
void copy_string(char *from,char *to)
{
int i=0;
while ((*(to+i)=*(from+i))!='\0')
{
i++;
}
*(to+i)='\0';
}
main()
{
char a[100]= "I am a teacher.";
char b[100]= "you are a student.";
printf("string_a=%s\nstring_b=%s\n",a,b);
copy_string(a,b);
printf("\nstring_a=%s\nstring_b=%s\n",a,b);
return 0;
}
运行时得到了正确结果阿!谢谢两位版主的指点!谢谢!

[此贴子已经被作者于2006-12-5 16:25:55编辑过]

2006-12-05 16:19
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
你一开始写的函数就是正确的.

#include"stdio.h"
void copy_string(char *from,char *to)
{while ((*to=*from)!='\0')
{to++;from++;}

}

main()
{
char a[100]= "I am a teacher.";
char b[100]= "you are a student.";
printf("string_a=%s\nstring_b=%s\n",a,b);
copy_string(a,b);
printf("\nstring_a=%s\nstring_b=%s\n",a,b);
return 0;
}

2006-12-05 16:24
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
关键是char *a= "I am a teacher.";
char *b= "you are a student.";
我之前也没看这个,之前是要分配空间的.

倚天照海花无数,流水高山心自知。
2006-12-05 16:32
meiling01
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-2
收藏
得分:0 
多亏楼上版主的提醒,我知道了,又增深了对指针的理解。谢谢。
2006-12-05 16:39
快速回复:请教关于字符串复制
数据加载中...
 
   



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

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