• strlen() 和 strcpy()函数


    strlen() 和 strcpy()函数的区别,这两个一个是返回一个C风格字符串的长度,一个是对一个C风格字符串的拷贝,两个本来功能上是不同的,此外,他们还有一些细小的区别:strlen("hello")返回的结果是5,是不包含字符串结尾处的‘’,但是strcpy(str1,str2),会拷贝str2中的‘’

    在使用strlen()的返回值去为strcpy的第一个参数分配空间的时候一定要注意!

    举个例子:

    char *str = "hello";
    int length = strlen(str);
    char char_array[5];
    strcpy(char_array,str);
    printf("the new string is:%s ",char_array);
    cout<<"str's length is: "<<length<<endl;

    这样输出的length是5,但是编译器会提示错误,VS2010提示是:

    说明字符串数组定义小了,换成大小为6的数组则恢复正常。

    在此,建议在使用strcpy的时候,目标数组(第一个参数)的大小应该设置为strlen()函数返回值+1 的值,或者建议使用如下的初始化数组方式:

    char char_array[sizeof("hello")];
    char * char_array_two = new char[strlen(str) + 1];

    参考资料:

    http://baike.baidu.com/link?url=QfLOtNdldgq29v53l6wKhyeB7AFxrejppntX3mhL5DHw03heqHLyRGT4Vo1b38YxgQdY8aruLeoT5h6XqLzhka

    http://blog.csdn.net/yasi_xi/article/details/9088291

  • 相关阅读:
    C# 中的高性能计时器(Daniel Strigl著,野比译)(转)
    C#中SerialPort类 随笔
    迭代器
    枚举数与可枚举类型(笔记)
    jQuery的关注与学习
    敏捷开发的4句宣言 大数据
    bat脚本
    c++动态库中回调函数使用
    C++中遍历lua table
    vs2010编译release版本却依赖debug版本库msvcrd100.dll
  • 原文地址:https://www.cnblogs.com/bugking/p/3639196.html
Copyright © 2020-2023  润新知