| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1301 人关注过本帖
标题:新人关于字符串指针的一点迷惑
只看楼主 加入收藏
yujianwu89
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
新人关于字符串指针的一点迷惑
最近一直在自学C,学到字符串指针的时候就有点混乱了。恳请各位大佬赐教:

对于strcpy,想自己尝试着用另一种方式来实现一下,把指针b的值赋予指针a,于是写了以下的代码

#include <stdio.h>

int main()
{
    char *a;
    char *b="hello";

    while(*b!='\0'){
        *a=*b;
        a++;
        b++;
    }
    *a='\0';

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

    return 0;
}

但是运行的时候总是崩溃,不知道到底是哪里出了错误。
搜索更多相关主题的帖子: include return 字符串 hello 
2017-04-25 16:29
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
char a[ 足够的长度,例如 strlen(b)+=1 ];
2017-04-25 16:31
yujianwu89
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-25
收藏
得分:0 
回复 2楼 rjsp
多谢版主,但是只能用数组的方式实现吗?纯用指针可以么?
2017-04-25 16:36
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
申请空间

DO IT YOURSELF !
2017-04-25 16:59
平平小黄
Rank: 2
等 级:论坛游民
帖 子:15
专家分:28
注 册:2016-9-27
收藏
得分:10 
#include <stdio.h>
#include<string.h>
#include<stdlib.h>//这里好像是必要的。
int main()
{
    char *b="hello",*c;
    char *a=malloc(sizeof(b));//增加这一行 开辟空间
    c=b;//让c指向*b的首位置
    while(*b!='\0')
    {
        *a=*b;
        a++;//printf("%s\n",b);你可以看一下b指针值的变化,挺有意思的
        b++;
    }
    *a='\0';
    a=c;//让a从新指向首位置
    printf("%s\n",a);

    return 0;
}


[此贴子已经被作者于2017-4-25 18:11编辑过]

2017-04-25 18:10
yujianwu89
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-25
收藏
得分:0 
以下是引用平平小黄在2017-4-25 18:10:33的发言:

#include <stdio.h>
#include<string.h>
#include<stdlib.h>//这里好像是必要的。
int main()
{
    char *b="hello",*c;
    char *a=malloc(sizeof(b));//增加这一行 开辟空间
    c=b;//让c指向*b的首位置
    while(*b!='\0')
    {
        *a=*b;
        a++;//printf("%s\n",b);你可以看一下b指针值的变化,挺有意思的
        b++;
    }
    *a='\0';
    a=c;//让a从新指向首位置
    printf("%s\n",a);

    return 0;
}

非常感谢,跟我想要的一样,谢谢!
2017-04-25 19:06
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1686
专家分:4252
注 册:2007-12-27
收藏
得分:0 
b是指针变量,sizeof(b)在这里不合适。
它表示指针变量占用的空间大小,不表示那个字符串的空间大小。
因此会有越界的问题。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2017-04-25 21:10
快速回复:新人关于字符串指针的一点迷惑
数据加载中...
 
   



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

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