none
strcat与strcpy的用法 RRS feed

  • 问题

  • #include<stdio.h>
    #include<string.h>
    void main()
    {
     char s1[30]={"people's republic of "};
     char s2[]={"china"};
     printf("%s\n",strcat(s1,s2));
     printf("%s\n%s\n",s1,s2);
     char s3[400]={"people's republic of ddww eegg "};
     char s4[8]={"china"};
     printf("%s\n",strcpy(s3,s4));
     printf("%s\n%s\n",s3,s4);
    }

    这个程序有两个警告,这的原因?

     warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        d:\program files\microsoft visual studio 9.0\vc\include\string.h(79) : 参见“strcat”的声明

     warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        d:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : 参见“strcpy”的声明

    2010年8月3日 1:09

答案

  • strcat不进行数组越界检测,所以windows认为它不安全。

    让你用strcat_s这个代替

    你要确认程序没问题,可以直接#pragma warning(disable:4996)


    0xBAADF00D
    2010年8月5日 8:04
    版主

全部回复

  • 警告C4996的文档里面有说

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年8月3日 2:25
    版主
  • strcat不进行数组越界检测,所以windows认为它不安全。

    让你用strcat_s这个代替

    你要确认程序没问题,可以直接#pragma warning(disable:4996)


    0xBAADF00D
    2010年8月5日 8:04
    版主