strcpy函数的思考

原创 2008年09月28日 14:28:00
 void test1()
{
int i;
char string[10];
char *str1="0123456789";
strcpy(string, str1); // 字符越界?
/*
错误:
strcpy(desc,src),
当src<=desc时, 如 char *str1="012345678",长度为10,
则string得到合理值,并且string[9]='/0';
当src>desc时,如  char *str1="0123456789",长度为11,
则string得到0-9的值,string[9]='9',
虽然可以运行,但string[9]后面的一个不属于string的字符
被恶意修改为‘/0',这不是我们想要的,也可能造成严重后果。
*/
printf("%s/n",string);
for(i=0;i<11;i++)//故意循环11次,查看最后一个被无意修改的字节;
{
    printf("%c/t%d/n",string[i],string[i]);
}
printf("/n");
}

void test2()
{
int i;
char string[100], str1[10];
for(i=0; i<10;i++)
{
str1[i] ='a';
}
strcpy(string, str1);
/*
strcpy(desc,src)
会把src 视为string类型,拷贝时查找'/0'结束符,作为scr的结束,来付给desc;
所以,本程序虽然能够运行,但潜在的问题:
str1的所有10个元素被初始化为'a',但后续的字符是不可预料的,
直到”偶然“碰到了'/0',才停止识别str1;
如果string是个100个元素的大数组,则会发现str1后面的"随机元素"也被复制给了string
直到碰到'/0'
说"偶然",加引号,其实'/0'在未知内存中还是挺多的。呵呵
当然,如果desc是string[10]的话,也就会掐掉str1后面的东东,这就是表面上的运行正确;
*/
printf("%s/n",string);
for(i=0;i<100;i++)
{
    printf("%c/t%d/t%c/n",string[i],string[i],str1[i]);//对比来看;
}
printf("/n");
}

strcpy()函数详解

strcpy()函数是C语言中的一个复制字符串的库函数,以下将详细解释说明一下: · 函数声明以及实现代码 char *strcpy(char *dst, const char *src);char ...
  • okawari_richi
  • okawari_richi
  • 2017年02月26日 14:17
  • 15361

C/C++中strcpy函数的用法

C语言标准库函数   原型声明:extern char *strcpy(char *dest,char *src);   头文件:string.h   功能:把src所指由NULL结束的字符串复...
  • SMF0504
  • SMF0504
  • 2016年05月11日 09:58
  • 10551

对于VS中一些较严谨的(_s)函数如strcpy_s的第二个参数的问题

在学习中发现strcpy_s中第二个参数不能随便写。开始我碰到这个比较严谨的函数时我故作聪明,将第二个参数使用strlen()代替。但拿不严谨的小聪明去解决严谨的函数问题必然问题一大堆。 今天这一个...
  • sinat_24048775
  • sinat_24048775
  • 2015年08月18日 17:19
  • 2280

strcpy函数引起的思考

已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc);⒈不调用库函数,实现strcpy函数。⒉解释为什么要返回char *。...
  • Snail_zhan
  • Snail_zhan
  • 2016年10月24日 11:15
  • 120

编写 strcpy函数

  • 2014年08月28日 10:50
  • 379B
  • 下载

strcpy函数

  • 2013年04月27日 01:23
  • 631B
  • 下载

C语言中strcpy_strcmp_strlen_strcat函数原型

  • 2013年05月14日 22:24
  • 4KB
  • 下载

安全函数strcpy_s、strncpy_s、snprintf_s、memcpy_s

  • 2017年11月01日 00:14
  • 220KB
  • 下载

strcpy等函数实现

  • 2013年03月18日 12:39
  • 4KB
  • 下载

strstr和strcpy函数实现

  • 2016年08月02日 16:49
  • 103KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:strcpy函数的思考
举报原因:
原因补充:

(最多只允许输入30个字)