请问strcpy的两个参数可以是同一个地址么?
如题,有相关的函数说明的链接最好,我想知道一下
例如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




