标题:字符串复制问题,求解答。
只看楼主
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
结帖率:100%
已结贴  问题点数:5 回复次数:17 
字符串复制问题,求解答。

这是为什么?前面怎么会有乱码?
搜索更多相关主题的帖子: 输入法 字符串 
2017-03-26 20:16
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
得分:0 
程序代码:
#include <stdio.h>

int main(void)
{
    char string_1[] = {"hello , c program!"};
    char string_2[20];
    char *p ;
    int i ;

    p = string_1;

    for(i = 0; i< strlen(string_1); i++)
    {
        string_2[i] = p+i;
    }

    printf("%s \n",string_1);
    printf("%s \n",string_2);

    return 0 ;
}
2017-03-26 20:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:2 
不能用存放字符的地方存地址。
试将p+i改为*(p+i)
2017-03-26 20:23
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
得分:0 
回复 3楼 吹水佬
hello , c program!
hello , c program!烫hello , c program!
Press any key to continue
编译后是这。
2017-03-26 20:26
烟雨晨曦
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:150
专家分:599
注 册:2017-3-5
得分:1 
回复 4楼 peter张
#include <stdio.h>
#include <string.h>

int main(void)
 {
     char string_1[] = {"hello , c program!"};
     char string_2[20];
     char *p ;
     int i ;

     p = string_1;

     for(i = 0; i<= strlen(string_1); i++)
     {
         string_2[i] = *(p+i);
     }


     printf("%s \n",string_1);
     printf("%s \n",string_2);

     return 0 ;
 }
2017-03-26 20:56
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:2 
string_2无串结束标志'\0'
    for(i = 0; i< strlen(string_1); i++)
    {
        string_2[i] = *(p+i);
    }
    string_2[i] = '\0';

    for(i = 0; i<= strlen(string_1); i++)
    {
        string_2[i] = *(p+i);
    }
2017-03-26 20:58
初学编程的人
Rank: 2
等 级:论坛游民
威 望:2
帖 子:90
专家分:84
注 册:2017-3-12
得分:0 
    char string_1[] = {"hello , c program!"};
 不知道这语句楼主怎么理解的,我的理解是string_1[0]中存放的是一个指针,这个指针指向hello , c program!这个字符串。所以strlen(string_1)返回的是这个指针的数值所对应的字符的长度
2017-03-26 20:59
初学编程的人
Rank: 2
等 级:论坛游民
威 望:2
帖 子:90
专家分:84
注 册:2017-3-12
得分:0 
    char string_1[] = {"hello , c program!"};
 这句去掉大括号改成这样    char string_1[] = "hello , c program!";估计就是楼主想要的结果了
 
2017-03-26 21:01
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
得分:0 
回复 6楼 吹水佬
厉害!!
2017-03-26 21:06
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
得分:0 
回复 8楼 初学编程的人
加{}与不加{}有什么区别吗?
2017-03-26 21:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475517-1-1.html




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

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