| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 442 人关注过本帖
标题:指针中字符串连接
只看楼主 加入收藏
panrui0512
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2014-1-11
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:8 
指针中字符串连接
#include<stdio.h>
#include<stdlib.h>
int main()
{
     char *s,*p;
     s=(char *)malloc(20);
     p="a boy";s="you are";
     while(*s)s++;
     while(*p)*s++=*p++;
     *s='\0';
     puts(s);
     printf("\n");
     free(s);
     return 0;}
这是一个字符串连接的程序,可是不知怎么的,老是出错
搜索更多相关主题的帖子: include return 字符串 
2014-03-01 21:08
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:2 
问题挺多的 你又想用动态内存分配 又想玩指针 结果两边都没玩对。。

先说内存分配
s=(char *)malloc(20);
...
while(*s)s++;
...
free(s);

你知道要释放内存 很好 但要释放内存 就得保证这个指针和你申请的时候是一样的

再说一个关于存储位置的

p="a boy";s="you are";

这个的意思其实是 一个指针指向了一个字符串 而这个字符串是在静态内存区的 对这两个字符串进行

while(*p)*s++=*p++;
*s='\0';

这样的操作都是不对的
2014-03-01 21:35
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
推荐你看一下高质量C/C++编程 虽然有人骂不好 但我觉得那里面强调了很多书上没讲或讲的不够深刻的地方
2014-03-01 21:36
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
Z版看看我的代码  请点评一下

这个是能实现楼主目标的
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *s=(char *)malloc(20);
    char *t=s; //这句比较重要,确保指针位于数组头部
    char* p=" a boy.";
    char* ss="You are";
    while(*ss!='\0') *t++=*ss++;
    while(*p!='\0')    *t++=*p++;
    *t='\0';
    printf("%s\n",&s[0]);
    free(s);
    return 0;
}

DO IT YOURSELF !
2014-03-01 21:46
panrui0512
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2014-1-11
收藏
得分:0 
回复 4楼 wp231957
就那句重要的程序,你只是把s赋值给t,下面的操作又是针对t的,并没有对s进行操作,而且最后输出的也是s,我不明白s是如何变的;您这程序很好,
2014-03-01 22:45
panrui0512
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2014-1-11
收藏
得分:0 
程序代码:
#include<stdio.h>
int main()   
{
    char p1[40],p2[10],*q=p1,*w=p2;
    gets(p1);
    gets(p2);
    while(*q)q++;
    if(*w){
       *q++=*w++; 
       *q='\0';}  
    printf("%s\n",p1);
    return 0;
}

我又编了一个,这次好一点,可是接的时候, 总是接p2的首字符,后面的都没接,也不知怎么的
2014-03-01 22:48
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用panrui0512在2014-3-1 22:45:45的发言:

就那句重要的程序,你只是把s赋值给t,下面的操作又是针对t的,并没有对s进行操作,而且最后输出的也是s,我不明白s是如何变的;您这程序很好,
t也罢 s也罢  指向的都是同一个地址  都是&s[0]

DO IT YOURSELF !
2014-03-01 22:50
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
你要知道 不管变量如何变幻  最终我们操作的都是内存块

DO IT YOURSELF !
2014-03-01 22:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
完全不看書的

授人以渔,不授人以鱼。
2014-03-01 23:20
快速回复:指针中字符串连接
数据加载中...
 
   



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

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