C语言中一些基础的代码

Strcpy(字符串复制函数)
char* My_strcpy(char* dest, const char* src) {
    if (!dest || !src) {
        return NULL; // 检查 dest 和 src 是否为 NULL,后面省略
    }
    char* ret = dest;    
    while (*src) { // 复制 '\0' 前的字符,直到 src 为 '\0'
        *dest++ = *src++;  // 逐字符复制
    }
    *dest = '\0';   // 复制结束符 '\0'
    return ret;       // 返回目的数组的首地址
}
Strcat(字符串连接函数)
char *my_strcat(char *dest, const char *src) {
    char *ret = dest; // 定位到 dest 的末尾
    while (*dest) {
        dest++;
    } 
    while (*src) { 
        *dest++ = *src++;
    }
    *dest = '\0'; // 确保 dest 字符串以结束符结尾
    return ret;
}
Strcmp(字符串比较函数)
int my_strcmp(const char *s1, const char *s2) {
    while (*s1 && *s1 == *s2) {
        s1++;
        s2++;
    }
    return *s1 - *s2; // 当两个字符不相等时,返回它们的ASCII码差值
}

内存大小端判断
#include <stdio.h>

int main() {
    unsigned int num = 1; // 32-bit unsigned int, 0x00000001
    unsigned char *ptr = (unsigned char*)&num;
    if (*ptr == 1) {
        printf("Little-endian\n");
    } else {
        printf("Big-endian\n");
    }
    return 0;
}
快速排序
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

void quickSort(int arr[], int low, int high) {
    if (low < high) {
        int pivot = arr[high];
        int i = (low - 1);
        for (int j = low; j <= high - 1; j++) {
            if (arr[j] < pivot) {
                i++;
                swap(&arr[i], &arr[j]);
            }
        }
        swap(&arr[i + 1], &arr[high]);
        quickSort(arr, low, i);
        quickSort(arr, i + 2, high);
    }
}
冒泡排序
void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                swap(&arr[j], &arr[j + 1]);
            }
        }
    }
}
二分查找
int binarySearch(int arr[], int l, int r, int x) {
    while (l <= r) {
        int m = l + (r - l) / 2;
        if (arr[m] == x) return m;
        else if (arr[m] < x) l = m + 1;
        else r = m - 1;
    }
    return -1;
}
斐波拉契数列
int fibonacci(int n) {
    if (n <= 1) return n;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值