备忘录

来源:互联网 发布:坐标系平移变换矩阵 编辑:程序博客网 时间:2024/06/06 15:38

字符串常量和字符数组

char* s1 = "hello"; // 字符串常量,保存在静态存储区,不能被修改s[0] = "H"; // crashchar s2[] = "world"; // 字符数组,栈中存储,可以被修改s2[0] = "W"; // ok

大小端模式判断

#define LITTEL_ENDIAN 2#define BIG_ENDIAN 1int check_endian(){    union{        char c;        short s;    }u;    u.s = 0x1122;    if (u.c == 0x11){        return BIG_ENDIAN;    }    return LITTEL_ENDIAN;//    short i = 0x1122;//    char* p = (char*)&i;//    if (*p == 0x11)//        return BIG_ENDIAN;//    return LITTEL_ENDIAN;}

strcpy

char* mystrcpy(char* dst, const char* src){    assert(dst != NULL && src != NULL);    char* _dst = dst;    const char* _src = src;    while( (*dst++ = *src++) != '\0');    return dst;}

atoi

int myatoi(char* s){    char* p = s;    bool minus = false;    long long num = 0;    while(*p++ == ' ');    if (*p == '+' || *p == '-'){        if (*p == '-')            minus = true;        ++p;    }    while(*p >= '0' && *p <= '9'){        num = num * 10 + *p - '0';//        if ((minus && num<INT_MIN) || ((!minus) && num>INT_MAX)){//            return minus ? INT_MIN : INT_MAX;//        }        ++p;    }    return (int)(minus ? -num : num);}

reverse

char* reverse(char* s){    char* start = s;//    char* end = s + strlen(s) - 1;    char* end = s;    while (*end++ != '\0');    end -= 2;    while (start < end){        char tmp = *start;        *start = *end;        *end = tmp;        ++start;        --end;    }    return s;}

itoa

char* myitoa(int value, char *buf, int radix){    bool minus = false;    int num = value;    char* p = buf;    if (num < 0){        minus = true;        num = -num;    }    do{        int rem = num % radix;        num = num / radix;        if (rem > 9){            *p = rem - 10 + 'a';        }else{            *p = rem + '0';        }        ++p;    }while(num > 0);    if (minus){        *p = '-';        *(p+1) = '\0';    }else{        *p = '\0';    }    return reverse(buf);}
原创粉丝点击