免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1974 | 回复: 6
打印 上一主题 下一主题

帮忙纠正 调用strcpy的错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-30 12:00 |只看该作者 |倒序浏览
#include<stdio.h>
#include<string.h>

char * __cdecl strcpy(char * dst, const char * src)
{
        char * cp = dst;

        while( *cp++ = *src++ )
                ;               /* Copy src over dst */

        return( dst );
}
void main()
{
        char *p="abcdddddddddd",*pp="ddddd";
        strcpy(pp,p);
        printf("%10s",pp);
}


这个程序complie可以,但是build有2个错误。
--------------------Configuration: 1 - Win32 Debug--------------------
Linking...
LIBCD.lib(strcat.obj) : error LNK2005: _strcpy already defined in 1.obj
Debug/1.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

1.exe - 2 error(s), 0 warning(s)

请问是什么原因??

[ 本帖最后由 heiniu532 于 2005-12-30 12:39 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-12-30 12:30 |只看该作者
改个名字吧

论坛徽章:
0
3 [报告]
发表于 2005-12-30 12:39 |只看该作者
ok

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-12-30 12:58 |只看该作者
char *p="abcdddddddddd",*pp="ddddd";
        strcpy(pp,p);

pp的空间为read-only。或者即使不是read-only,也不规范,要出警告的。

论坛徽章:
0
5 [报告]
发表于 2005-12-30 13:50 |只看该作者
但是,即使把PP置为NULL,还是不行的。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-12-30 13:55 |只看该作者
原帖由 heiniu532 于 2005-12-30 13:50 发表
但是,即使把PP置为NULL,还是不行的。


大哥,你还是没明白。NULL可以写么?C不仅仅是种语言。C在语言的范畴东西很少,C要了解的相关知识很多。

你可以从malloc函数开始看起。了解一下C中是怎么认识内存的。

论坛徽章:
0
7 [报告]
发表于 2005-12-30 14:06 |只看该作者
  1. #include<stdio.h>
  2. #include<string.h>

  3. char * __cdecl my_strcpy(char * dst, const char * src) /*change another name*/
  4. {
  5.         char * cp = dst;

  6.         while( *cp++ = *src++ )
  7.                 ;               /* Copy src over dst */

  8.         return( dst );
  9. }
  10. /*void main() is not standard C*/
  11. int main(void)
  12. {
  13.         /*use arrays or pointers that have been allocated memory units*/
  14.         char p[]="abcdddddddddd";
  15.         char pp[100]="ddddd";
  16.         my_strcpy(pp,p); /*pp should reserve enough room for the string pointed by p*/
  17.         printf("%10s",pp);

  18.         return 0;
  19. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP