面试经常考的,可是经常忘记!现在项目一般都是用string,很少用char,都不记得写了,现在记录下!省的忘记
// test123.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <assert.h>
#include <time.h>
void *mystrcpy(void * const dest,void const * const src,
const size_t num)
{
if(dest==src)
{
return dest;
}
for (size_t i=0;i<num;i++)
{
*(((char *)dest+i))=*(((char *)src+i));
}
return dest;
}
int mymemcmp(void const *buf1,void const *buf2,const size_t num)
{
for (size_t i=0;i<num;i++)
{
if(*((char *)buf1+i)>*((char *)buf2+i))
{
return 1;
}
else
{
if(*((char *)buf1+i)<*((char *)buf2+i))
{
return -1;
}
}
}
return 0;
}
void* mymemset(void * const dest,int c,const size_t num)
{
for (size_t i=0;i<num;i++)
{
*((char *)dest+i)=c;
}
return dest;
}
void myassert(bool isassert)
{
if(!isassert)
{
printf("Assertion failed!\n");
abort();
}
}
char* mystrcpy(char * const dest,char const * const src)
{
if(dest==src)
{
return dest;
}
size_t i=0;
while(*(dest+i)=*(src+i))
{
i++;
}
return dest;
}
char* mystrncpy(char * const dest,char const * const src,
const size_t num)
{
for (size_t i=0;i<num;i++)
{
*(dest+i)=*(src+i);
}
*(dest+i)='\0';
return dest;
}
char* mystrcat(char * const dest,char const * const src)
{
int i=0;
while(*(dest+i)!='\0')
{
i++;
}
int j=0;
while(*(dest+i+j)=*(src+j))
{
j++;
}
return dest;
}
char* mystrncat(char * const dest,char const * const src,const size_t num)
{
int i=0;
while(*(dest+i)!='\0')
{
i++;
}
for (size_t j=0;j<num;j++)
{
*(dest+i+j)=*(src+j);
}
*(dest+i+j)='\0';
return dest;
}
int mystrcmp(char const * const str1,char const * const str2)
{
int i=0;
while(!(*(str1+i)=='\0'&&*(str2+i)=='\0'))
{
if(*(str1+i)>*(str2+i))
{
return 1;
}
else
{
if(*(str1+i)<*(str2+i))
{
return -1;
}
}
i++;
}
return 0;
}
int mystrncmp(char const * const str1,char const * const str2,const size_t num)
{
for (size_t i=0;i<num;i++)
{
if(*(str1+i)>*(str2+i))
{
return 1;
}
else
{
if(*(str1+i)<*(str2+i))
{
return -1;
}
}
}
return 0;
}
char* mystrchr(char const * const dest,int c)
{
int i=0;
while(*(dest+i)!=(char)c)
{
i++;
}
return (char *)dest+i;
}
char* findstr(char * const dest,char const * const src,
char c,size_t num)
{
char *temp=strchr(src,c);
for (size_t i=0;i<num;i++)
{
temp=strchr(temp+1,c);
}
mystrncpy(dest,temp+1,strchr(temp+1,c)-temp-1);
return dest;
}
int _tmain(int argc, _TCHAR* argv[])
{
//int a[10]={1,2,3,4,5,6,7,8,9,10};
//int b[10]={1,2,3,4,5,6,7,8,9,10};
//for (int i=0;i<10;i++)
//{
// printf("%d ",b[i]);
//}
//printf("\n");
//mystrcpy(b,a,10*sizeof(int));
//for (int i=0;i<10;i++)
//{
// printf("%d ",b[i]);
//}
//printf("\n");
//printf("%d\n",mymemcmp(a,b,sizeof(int)*10));
//mymemset(a,0,sizeof(int)*10);
//for (int i=0;i<10;i++)
//{
// printf("%d ",a[i]);
//}
//printf("\n");
//mymemset(a,1,sizeof(int)*10);
//for (int i=0;i<10;i++)
//{
// printf("%d ",a[i]);
//}
//printf("\n");
//int *p=new int;
//p=NULL;
//if(p==NULL)
//{
// printf("fjsaklfjslf\n");
// abort();
//}
//tm timedata;
//while(1)
//{
// _getsystime(&timedata);
// system("cls");
// printf("现在是:%d年%d月%d日 %d:%d:%d 星期%d\n",
// timedata.tm_year+1900,timedata.tm_mon+1,timedata.tm_mday,
// timedata.tm_hour,timedata.tm_min,timedata.tm_sec,
// timedata.tm_wday);
//}
//char str1[99]="abcd";
//char str2[99]="abce";
//printf("%s\n",str1);
//mystrncpy(str1,str2,2);
//printf("%s\n",str1);
//printf("%s\n",mystrncat(str1,str2,2));
//printf("%s\n",str1);
//printf("%d\n",mystrncmp(str1,str2,2));
char str[99]="|张三|李四|王五|";
char name1[99];
char name2[99];
char name3[99];
findstr(name1,str,'|',0);
printf("%s\n",name1);
findstr(name2,str,'|',1);
printf("%s\n",name2);
findstr(name3,str,'|',2);
printf("%s\n",name3);
return 0;
}