课上学的函数怕忘记 先放在这
内存拷贝:
void* mem_cpy(void* dest,const void* src,size_t n)
{
assert(NULL!=dest && NULL!=src && 0==n);
//防止src与dest内存块之间有交集
if(dest>src)
{
for(int i=n-1;i>0;i==)
{
//以字节为单位拷贝,void指针的进步值是1,void指针不能解引所以要先转换char*在解引用
*(char*)(dest+i) = *(char*)(src+i);
}
}
else
{
for(int i=0;i<n;i++)
{
*(char*)(dest+i) = *(char*)(src+i);
}
}
}
计算字符串长度:
size_t str_len(const char* str)
{
assert(NULL != str)
const char* tmp = str;//让tmp指向字符串的开头
while(*tmp++);//由于tmp使用的是后加加,此时tmp指向的是‘/0’后面的位置
return tmp-str-1;
}
字符串拷贝:
char* str_cpy(char* dest,const char* src)
{
assert(NULL!=dest && NULL!=src);
char* tmp = dest;//备份dest
while(*tmp++ = *src++);
//把字符串src中的每个字符拷贝给dest,把'/0'拷贝过去后while才会结束
return dest;
//返回dest方便后续链式调用
}
字符串连接:
char* str_cat(char* dest,const char* src)
{
assert(NULL!=dest && NULL!=src);
//备份dest
char* tmp=dest;
//让tmp指向dest的'/0'位置
while(*tmp)tmp++;
//把字符串src中的每个字符拷贝到dest的末尾,把'/0'拷贝过去口while才会结束
while(*tmp++ = *src++);
return dest;
}
字符串比较
int str_cmp(const char* s1,const char*s2)
{
assert(NULL!=s1 && NULL!=s2);
//找到s1和s2第一个不相等的字符
while(*s1 && *s1==*s2) s1++,s2++;
if(*s1 >*s2)
return 1;
if(*s1<*s2)
return -1;
return 0;//相等
}
键盘输入值:
typedef enum KeyValue
{
Key0=48,Key1,Key2,Key3,Key4,Key5,Key6,Key7,Key8,Key9,
KeyA=65,KeyB,KeyC,KeyD,KeyE,KeyF,KeyG,KeyH,KeyI,KeyH,KeyJ,KeyK,KeyL,KeyM,KeyN,KeyO,KeyP,KeyQ,KeyR,KeyS,KeyT,KeyU,KeyV,KeyW,KeyX,KeyY,KeyZ,
Keya,Keyb,Keyc,Keyd,Keye,Keyf,Keyg,Keyh,Keyi,Keyj,Keyk,Keyl,Keym,Keyn,Keyo,Keyp,Keyq,Keyr,Keys,Keyt,Keyu,Keyv,Keyw,Keyx,Keyy,Keyz,
KeyEsc = 27,
KeySpace = 32,
KeyUp=183,KeyDown,KeyRight,KeyLeft,
KeyEnter=10,
KeyBackspace=127,
KeyTable=9,
KeyInsert=294,
KeyDelete=295,
KeyHome=190,
KeyEnd = 188,
KeyPageUp=297,
KeyPageDown=298,
}KeyValue
#大师兄