标题:strcpy()的高级属性
只看楼主
a1024204390
Rank: 2
来 自:河南周口郸城
等 级:论坛游民
帖 子:87
专家分:67
注 册:2012-6-27
结帖率:88.89%
已结贴  问题点数:20 回复次数:11 
strcpy()的高级属性
#include<stdio.h>
#include<string.h>
#define SIZE 40
#define    WORDS "beast";

int main(void)
{
    char *orig = WORDS;
    char copy[SIZE] = "Be the best that you can be.";
    char *ps;

    puts(orig);
    puts(copy);
    ps = strcpy(copy + 7, orig);
    puts(copy);
    puts(ps);

    system("pause");
    return 0;

}
//红色字体的那行代码,ps = strcpy(copy + 7, orig);赋值给ps后输出的ps为什么是beast?谢谢!

搜索更多相关主题的帖子: system return include beast 风格 
2016-10-25 09:10
a1024204390
Rank: 2
来 自:河南周口郸城
等 级:论坛游民
帖 子:87
专家分:67
注 册:2012-6-27
得分:0 
刚才没贴上图

永不言败!never say die!
2016-10-25 09:11
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:5 
百度的解释比较清楚:

原型声明:char *strcpy(char* dest, const char *src);

头文件:#include <string.h> 和 #include <stdio.h>

功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。
2016-10-25 09:21
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:5 
你大概想玩这个东东吧

程序代码:
#include<stdio.h>
#include<string.h>

int main(void)
{
    char copy[100] = "Be the best that you can be.";
      char ps[100]={'\0'};
    char *p=ps;
       strcpy(p, copy+7);
    puts(p);
    return 0;

}

DO IT YOURSELF !
2016-10-25 09:47
a1024204390
Rank: 2
来 自:河南周口郸城
等 级:论坛游民
帖 子:87
专家分:67
注 册:2012-6-27
得分:0 
回复 4楼 wp231957
不是,我就是想知道执行ps = strcpy(copy + 7, orig);这条语句后copy[]这个数组为什么会发生了变化?ps = strcpy(copy + 7, orig);后面的语句puts(copy);输出的不是原来的"Be the best that you can be." 而是Be the beast,是strcpy函数的特性嘛?

永不言败!never say die!
2016-10-25 12:36
a1024204390
Rank: 2
来 自:河南周口郸城
等 级:论坛游民
帖 子:87
专家分:67
注 册:2012-6-27
得分:0 
回复 3楼 grmmylbs
不是
我就是想知道执行ps = strcpy(copy + 7, orig);这条语句后copy[]这个数组为什么会发生了变化?
ps = strcpy(copy + 7, orig);后面的语句puts(copy);输出的不是原来的"Be the best that you can be."
而是Be the beast,是strcpy函数的特性嘛?

永不言败!never say die!
2016-10-25 12:38
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
得分:5 
copy   Be the best that you can be.\0
orig   beast\0
       01234567
从第7位开始赋值beast\0

copy赋值后   Be the beast\0hat you can be.\0
puts(copy)   Be the beast遇到\0结束
2016-10-25 12:57
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:5 
//C语言读写字符串是根据'\0'的符号判断是否读到字符串末尾的,针对这个数组你还可以试试puts(&copy[1])、puts(copy+12)之类的语句
程序代码:
#include<stdio.h>
#include<string.h>
#define SIZE 40
#define    WORDS "beast";

int main(void)
{
    char *orig = WORDS;//orig指向静态常量“beast”
    char copy[SIZE] = "Be the best that you can be.";
    char *ps;

    puts(orig);
    puts(copy);
    ps = strcpy(copy + 7, orig);//ps=copy+7的位置正好是&copy[7],也就是copy里的best开始,strcpy把orig的内容复制过来数组copy[]就变成了{'B','e',' ','t','h','e',' ','b','e','a','s','t','\0',,'h','a','t',' ','y','o','u',' ','c','a','n',' ','b','e','\0'};
    puts(copy);//从copy[0]输出到copy[12]
    puts(ps);//从copy[7]输出到copy[12]

    system("pause");
    return 0;

}





[此贴子已经被作者于2016-10-25 14:37编辑过]


φ(゜▽゜*)♪
2016-10-25 14:36
蹴鞠者
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:134
注 册:2016-9-26
得分:0 
我就想知道你用的什么软件,可以给我一个安装包吗
2016-10-25 16:02
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 9楼 蹴鞠者
vs系列  具体版本看不出来  
可以自己到网上下载  都是好几个G的容量  点对点下载很难

DO IT YOURSELF !
2016-10-25 20:53



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




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

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