CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

请问strcpy的两个参数可以是同一个地址么?

楼主CodeMagic(ErrorDetector)2006-07-03 20:48:05 在 C/C++ / C语言 提问

如题,有相关的函数说明的链接最好,我想知道一下  
   
  例如strcpy(str,   str+3)   其中str为字符串,这样写是否可行 问题点数:30、回复次数:11Top

1 楼tailzhou(尾巴)回复于 2006-07-03 20:56:02 得分 3

可以呀  
  #include     "stdio.h"  
  #include     "string.h"  
   
  int   main()  
  {  
  char   str[]="1234567890";  
  char   *sp;  
  strcpy(str,str+3);  
  printf("%s",str);  
  return   0;  
  }  
   
  C:\projects>test  
  4567890Top

2 楼winks(少爷)回复于 2006-07-03 20:58:49 得分 2

可以,只是不会有人这样用Top

3 楼UPCC(杂食动物)回复于 2006-07-03 21:09:28 得分 3

例如strcpy(str,   str+3)   其中str为字符串,这样写是否可行  
  -----------------------------------  
  str可以是char   str[..],因为可以是char*   str   =   new   char[..];,但就是不可以char*   str   =   "....";Top

4 楼CodeMagic(ErrorDetector)回复于 2006-07-03 21:52:16 得分 0

其实我想实现的是同一字符串中数据的移位操作,想知道strcpy的实现是否支持这样的操作。Top

5 楼happytang(一只叫苏格拉底的猪)回复于 2006-07-03 22:10:17 得分 3

可以,不过数据就被覆盖了,这样损害了原始数据Top

6 楼CodeMagic(ErrorDetector)回复于 2006-07-03 22:14:28 得分 0

不过程序没问题好像  
   
  哪里有标准c函数strcpy实现的英文说明,我想验证一下  
   
  用循环也可以实现,不知道循环的实现是从高位到低位遍历   还是反之  
  Top

7 楼mingming_lu(初来乍到)回复于 2006-07-03 22:37:28 得分 3

这是种很差的用法,不推荐使用!Top

8 楼daisy122(猫咪)回复于 2006-07-04 08:40:39 得分 5

函数名:   strcpy    
  功     能:   串拷贝    
  用     法:   char   *strcpy(char   *str1,   char   *str2);    
  程序例:    
   
  #include   <stdio.h>    
  #include   <string.h>    
   
  int   main(void)    
    {    
          char   string[10];    
          char   *str1   =   "abcdefghi";    
   
          strcpy(string,   str1);    
          printf("%s\n",   string);    
          return   0;    
    }    
   
  Top

9 楼jixingzhong(瞌睡虫·星辰)回复于 2006-07-04 08:59:50 得分 5

strcpy的两个参数可以是同一个地址么  
  ===================  
  这个应当是标准未定义行为,   结果可能不一定...  
   
  在C99   标准,对于指针,新增加一个   restrict   修饰符号,  
  该符号限制了指针对象访问方式,  
  在   memcpy   等函数参数中使用该修饰,  
  使得参数必须是不同的对象   ....  
  (也就是不能够是同一个对象   ...)Top

10 楼mLee79()回复于 2006-07-04 09:15:26 得分 3

MSDN:   The   behavior   of   strcpy   is   undefined   if   the   source   and   destination   strings   overlap.  
   
  后面往前面拷贝没问题,   跟   memcpy   一样   .....  
  Top

11 楼zez(思恩 闭关练功ing...)回复于 2006-07-04 09:32:26 得分 3

这种问题  
   
  你自己为什么不试一下呢???Top

相关问题

关键词

得分解答快速导航

  • 帖主:CodeMagic
  • tailzhou
  • winks
  • UPCC
  • happytang
  • mingming_lu
  • daisy122
  • jixingzhong
  • mLee79
  • zez

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo