• c代码实现小技巧


    1、cmake编译

    //CMakeLists.txt
    cmake_minimum_required(VERSION 3.16.3)
    
    project(VCD)
    
    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) //括号里面填库文件所在文件夹
    
    # src files
    set(SRC_FILES
        main.c
        *.c     //所有需要编译的文件都可以写在这里
        *.h
       )
    
    SET(CMAKE_BUILD_TYPE "Debug")  //设置这个,可以在终端利用gdb对代码进行调试
    
    ADD_EXECUTABLE(vcd ${SRC_FILES})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2、编译
    通常都是在build文件中编译,这样也比较方便删除编译过程中生成的文件,不和代码产生混淆。以下使用build.sh脚本实现快速编译:

    cd build
    cmake ..
    make  
    ./vcd
    cd ..
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、小技巧
    3.1 sprintf()函数可以实现不同类型的变量输出到一个目的字符串,使用时需包含#include

    sprintf(buffer, "%d, %f, %s", 123, 123, "Hello world !");
    
    • 1

    3.2 atoi()函数用于把一个字符串转换成一个整型数据,使用时需包含#include

    int val;
    char str[10];
    strcpy(str, "100");
    val = atoi(str);
    
    • 1
    • 2
    • 3
    • 4

    4、c代码中比较好用的代码
    4.1 c语言实现一个列表list(转载于https://blog.csdn.net/qq_35025383/article/details/80840905)

    
    #include   
    #include   
    
    struct plist {//定义列表结构体
        int A[1000];
        int n;
    };
    void List_Init(plist *list);
    void List_Append(plist* list, int value);
    void List_Show(plist *list);
    void List_Insert(plist *list, int index, int value);
    
    
    void List_Init(plist *list) { //初始列表
        list->n = 0;
    }
    
    void List_Append(plist* list, int value) { //参考python中的append()函数
        list->A[list->n++] = value;
    }
    
    void List_Insert(plist *list, int index, int value) { //插入在某个位置插入值,下标从0开始
        for (int i = list->n - 1; i >= index; i--) {
            list->A[i + 1] = list->A[i];
        }
        list->A[index] = value;
        list->n++;
    }
    
    void List_Show(plist *list) { //打印列表
        printf("len=%d values=", list->n);
        for (int i = 0; i < list->n; ++i)
        {
            printf("%d ", list->A[i]);
        }
        printf("\n");
    }
    
    int main() {
        plist* P_List = (plist*)malloc(sizeof(plist));
        List_Init(P_List);
        List_Append(P_List, 123);
        List_Append(P_List, 456);
        List_Append(P_List, 789);
        List_Show(P_List);
        List_Insert(P_List, 1, 666);
        List_Show(P_List);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    4.2 c语言hashmap的实现
    参考地址

  • 相关阅读:
    C++ Reference: Standard C++ Library reference: C Library: cstdio: ungetc
    【洛谷P2024】食物链【种类并查集】
    在Nuxt.js中添加PostCSS自动前缀器
    java计算机毕业设计健康管理系统源码+数据库+系统+lw文档+mybatis+运行部署4
    vscode右键菜单栏功能说明
    Java面试题:如何在Java中进行代码优化以提高性能?
    java计算机毕业设计桔子酒店客房管理系统源程序+mysql+系统+lw文档+远程调试
    Go 文件操作
    项目经验3
    Python、Rust中的协程
  • 原文地址:https://blog.csdn.net/x88588/article/details/126870268