zoukankan      html  css  js  c++  java
  • strncpy和strlen的可能的实现

    #include <stdio.h>
    #include <stdlib.h>
    //为避免与标准库中的函数发生混淆,我将它们命名为stringNCopy和stringLength
    char *stringNCopy(char *dest, const char *src, size_t count)
    {
        for (size_t i = 0; i < count; ++i)
        {
            dest[i] = src[i];
            if (!src[i])
            {
                break;
            }
        }
        return dest;
    }
    size_t stringLength(const char *str)
    {
        size_t count = 0;
        while (*str++)
        {
            ++count;
        }
        return count;
    }
    int main()
    {
        char *dest = malloc(sizeof(char) * 100);
        const char *src = "hello world
    世界你好";
        stringNCopy(dest, src, stringLength(src) + 1);
        printf("%s
    ", dest);
        free(dest);
        char arr[50];
        char *ret = stringNCopy(arr, "programming 程序设计", 10000);
        printf("%s
    %s
    ", arr, ret);
        ret = stringNCopy(arr, "Programmer", 1);
        printf("%s
    %s
    ", arr, ret);
        char test[2];
        const char *str = "测试Test";
        ret = stringNCopy(test, str, 100); //非法的操作,可通过编译,但是运行之后可能会报错(vc++下编译并运行之后会报错,Windows下gcc编译后运行无报错)
        printf("%s
    %s
    ", test, ret);
        printf("%u
    %u
    %u
    ", stringLength(""), stringLength(""), stringLength("字符串 String"));
        return 0;
    }
    
    
  • 相关阅读:
    js---小火箭回到顶部
    JS小案例--简单时钟
    堆排序以及TopK大顶堆小顶堆求解方式(js版)
    svg-icon
    Vue 点击按钮 触发 input file 选择文件
    图片裁剪放大缩小旋转 Cropper.js
    Cytoscape
    vue d3 force cytoscape
    获取当月多少天
    谷歌打印去页脚
  • 原文地址:https://www.cnblogs.com/buyishi/p/8447162.html
Copyright © 2011-2022 走看看