zoukankan      html  css  js  c++  java
  • 字符串拼接函数的实现(简易版)

    字符串操作函数的实现----字符串拼接

     1 #include <stdio.h>
     2 
     3 // 求字符串长度
     4 int getLength(char *str) {
     5     
     6     int len;
     7     for (len = 0; str[len]!= ''; len++);
     8 
     9     return len;
    10 }
    11 
    12 
    13 // 字符串拼接函数实现, 将str2拼接到str1后
    14 char *myStrcat(char *str1, char *str2) {        
    15     int len = getLength(str1);        // 字符串str1的长度
    16     int i, j;
    17 
    18     for (i = len, j = 0; str2[j] != ''; i++, j++) {
    19         str1[i] = str2[j];
    20     }
    21     
    22     str1[i] = '';        // 手动添加字符串结束标志
    23 
    24     return str1;
    25 }
    26 
    27 int main() {
    28     
    29     char s1[100]="abcd";
    30     char s2[40]="efgh";
    31     char *p = s1;
    32     
    33     p = myStrcat(s1, s2);        // 数组名是常量, 不可以做左值
    34     
    35     printf("s1 = %s
    ", s1);
    36     printf("s2 = %s
    ", s2);
    37     printf("s1 + s2 = %s
    ", p);
    38     
    39     return 0;
    40 }

     运行结果:

    注意事项:

    0° main函数中的测试字符串s1不能定义成char *s1 = "abcd"的形式, 这种定义方式只是声明一个char型的指针变量指向字符串 "abcd", 而并没有开辟内存空间, 不能进行拼接.

    1° 在myStrcat函数中拼接动作完成后需要手动添加一个字符串结束标志''.

    2° 字符数组s1的容量要足够大, 容量至少应是两字符串实际长度的和.

    思考(仅仅个人观点):

    曾尝试过在myStrcat()函数中事先判断字符串s1的容量, 但考虑到字符数组做函数参数时会退化成指针, 用getLength()函数获取长度只能得到它的实际有效长度而无法获取字符数组的容量.

    也就是说在主函数中定义的s1[100], 将s1作为参数传进去, 就退化为指针了, 所以你无论是借助sizeof还是strlen都无法得知它的容量.

  • 相关阅读:
    12个JavaScript MVC框架评估 简单
    chrome developer tool 调试技巧 简单
    转CSS3线性渐变 简单
    base64:URL背景图片与web页面性能优化 简单
    转linux下apache安装gzip压缩 简单
    转思考什么时候使用Canvas 和SVG 简单
    转周报的逻辑 简单
    浏览器三种刷新方式采取的不同缓存机制 简单
    poj 1308 Is It A Tree? (并查集)
    poj 2912 Rochambeau (并查集+枚举)
  • 原文地址:https://www.cnblogs.com/hejjon/p/10821853.html
Copyright © 2011-2022 走看看