| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1105 人关注过本帖
标题:求 c语言中的字符串考备
只看楼主 加入收藏
tfgood
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-12-3
收藏
 问题点数:0 回复次数:14 
求 c语言中的字符串考备
#include<stdio.h>
main()
{
   static void copy(char *p1,char *p2);
   char *a="sky",*b="moon";

   printf("%s\n%s\n",a,b);

   copy(a,b);

   printf("%s\n%s\n",a,b);
   
}

static void copy(char *p1,char *p2)
{
   
   while((*p2=*p1)!='\0')
   {
      p1++;
      p2++;
   }
  
   *p2='\0';
}

目的:想完成sky对moon字符串的复制

main函数中的*a,*b如换用a[],b[]是可以实现的

为什么指针不能实现

谢谢大侠指教  
搜索更多相关主题的帖子: c语言 字符 
2008-12-03 15:09
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
#include<stdio.h>
main()
{
   void copy(char *p1,char *p2);
   char *a="sky",b[80]="moon";   //--必须为目标串申请空间才可以

   printf("%s\n%s\n",a,b);

   copy(a,b);

   printf("%s\n%s\n",a,b);
   
}

void copy(char *p1,char *p2)
{
   
   while((*p2=*p1)!='\0')
   {
      p1++;
      p2++;
   }
  
   *p2='\0';
}
2008-12-03 17:52
tfgood
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-12-3
收藏
得分:0 
回复 第2楼 ying8501 的帖子
能说得清楚些吗
谢谢
2008-12-04 20:01
dubukuangye
Rank: 1
等 级:新手上路
威 望:2
帖 子:155
专家分:3
注 册:2008-11-11
收藏
得分:0 
回复 第3楼 tfgood 的帖子
我觉得你的代码没错啊,我用TC运行了一下,竟然出现link错误,有可能是我的TC坏了~~~~~~~~

与其离开她为了过的更好,不如抓住她,自己努力让她过的更好
2008-12-04 20:31
tfgood
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-12-3
收藏
得分:0 
回复 第4楼 dubukuangye 的帖子
main函数中的*a,*b如换用a[],b[]是可以实现的
2008-12-04 21:15
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
你是想把a串复制给b,但是b并没有指向一个可用的内存空间(如,数组等)所以你的程序运行时出现错误。如果把b设成数组,或者b为指针变量,再设一个数组char c[80]; b=c;这样有了可用的内存空间,才能进行串的复制操作。
2008-12-04 21:29
tfgood
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-12-3
收藏
得分:0 
回复 第6楼 ying8501 的帖子
b并没有指向一个可用的内存空间?????????
b是一个指针变量 它指向“moon”的起始地址
怎么能说没可用空间
如果没有可用空间   那“moon”保存在哪?
2008-12-04 23:04
s245968969
Rank: 1
来 自:湖北襄樊
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-12-5
收藏
得分:0 

我是新手,我怕谁!
2008-12-05 00:50
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1705
专家分:4345
注 册:2007-12-27
收藏
得分:0 
像这样写的话,你可以认为那个字符串所在的位置是只读的。

----所以不好用

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-12-05 00:53
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
指针就象是名片,它指向的地址,暂且就比喻为房子吧。
-----------------------------------------

    一个指针,如果没申请内存,或者没有指向数组,就象是空有一张名片。你拿着这张标有某地址的名片,去找某些人(数值),却无法找得到。因为这里的地址是随机的,也就是错误的地址,当然无法找到。

    你的程序中,指针指向的是“钉子户”,就如同重庆的“史上最牛钉子户”一样,不达到某种条件,是不会搬走的。你强要把它搬走(拷贝别的数值),那么只会闹出乱子,影响了当地政府以及国内外大量的媒体。

    这只是个比喻,就是说,你的指针指向的字符串只是存在内存中的一段字符,如果想改变它,就只有申请内存,然后才能办得到。

    个人观点,谨作参考。
2008-12-05 01:26
快速回复:求 c语言中的字符串考备
数据加载中...
 
   



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

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