#include<stdio.h>
#include<assert.h>
字符串长度函数:
size_t strlen(const char*s){
assert(s!=NULL);
size_t len=0;
while(*s++!='\0'){
len++;
}
return len;
}
字符串拷贝函数:
char *strcpy(char *dest,const char *src){
assert(dest!=NULL&src!=NULL);
char *pdest=dest;
while(*dest++=*src++);
*dest='\0';
return pdest;
}
n个字符串拷贝函数
char *strncpy(char *dest,const char *src,size_t n){
assert(dest!=NULL&&src!=NULL);
char *pdest=dest;
while(n-->0&&(*dest++=*src++)!='\0');
return pdest;
}
追加函数:
char *mystrcat(char *dest,const char *src){
assert(dest!=NULL&&src!=NULL);
char *pdest=dest;
while(*dest!='\0'){
++dest;
}
while((*dest++=*src++)!='\0');
return pdest;
}
追加n个字符
char *strncat(char *dest,const char *src,size_t n){
assert(dest!=NULL&&src!=NULL);
char *pdest=dest;
while(*dest!='\0'){
++dest;
}
while(n-->0&&(*dest++=*src++)!='\0');
return pdest;
}
字符串比较
int mystrcmp(const char*s1,const char*s2){
assert(s1!=NULL&&s2!=NULL);
while(*s1!='0'&&*s2!='0'&&*s1==*s2){
s1++;
s2++;
}
return *s1-*s2;
}
比较前n个符串
int mystrncmp(const char*s1,const char*s2,size_t n){
assert(s1!=NULL&&s2!=NULL);
while(--n>0&&*s1!='\0'&&*s2!='\0'&&*s1==*s2){
s1++;
s2++;
}
return *s1-*s2;
}
内存拷贝函数:
把从src开始拷贝n个字节的数据到dest
void *memcpy(void *dest,const void *src,size_t n){
assert(dest!=NULL&&src!=NULL);
char *pdest=(char*)dest;
char *psrc=(char*)src;
while(n>0){
*pdest=*psrc;
pdest++;
psrc++;
n--;
}
return dest;
}
字符串转化为整型
int atoi(const char *s){
if(s==NULL){
return 0;
}
int flag = 1;
if(*s=='-'){
flag = -1;
s++;
}else if(*s == '+'){
s++;
}
int num = 0;
while(*s != '\0'){
num = num*10 + *s-'0';
s++;
}
num = num * flag;
return num;
}
#include <stdio.h>
#include <string.h>
整型转化为字符串
char *reverse(char *s){
if(s == NULL){
return NULL;
}
size_t len = strlen(s);
for(int i=0;i<len/2;i++){
char t = s[i];
s[i] = s[len-1-i];
s[len-1-i] = t;
}
return s;
}
char *itoa(int num,char *s){
if(s == NULL){
return NULL;
}
char *ps = s;
int flag = num>=0?1:-1;
num = num>=0?num:-num;
while(num!=0){
int n = num%10;
*s = n+'0';
num = num/10;
s++;
}
if(flag == -1){
*s = '-';
s++;
}
*s = '\0';
return reverse(ps);
}