strlen的实现 #include <iostream>
using namespace std;
int my_strlen(const char * str)
{
int count = 0;
while (*str++)
{
count++;
}
return count;
}
int main()
{
char test[] = " abcd ";
cout << my_strlen(test) << endl;
system("pause");
return 0;
}
strcmp 的实现 #include <iostream>
#include "assert.h"
using namespace std;
int my_strcmp(const char * str1, const char * str2)
{
assert((str1 != NULL) && (str2 != NULL));
while (*str1 == *str2)
{
if (*str1 == '\0')
{
return 0;
}
str1++;
str2++;
}
return (unsigned char)*str1 - (unsigned char)*str2;
}
int main()
{
char test1[] = "bbcd";
char test2[] = "abcd";
char test3[] = "abcd";
cout << my_strcmp(test1, test2) << endl;
cout << my_strcmp(test2, test3) << endl;
system("pause");
return 0;
}
strcat的实现 #include <iostream>
#include "string.h"
#include "assert.h"
using namespace std;
char * my_strcat( char * str1, char * str2)
{
assert(str1 != NULL);
assert(str2 != NULL);
char * tmp = str1;
while (*str1 != '\0')
{
str1++;
}
while (*str2 != '\0')
{
*str1++ = *str2++;
}
*str1 = '\0';
return tmp;
}
int main()
{
char test1[100] = "abcd";
char test2[] = "cd";
cout << my_strcat(test1, test2) << endl;
system("pause");
return 0;
}
strcpy的实现 #include <iostream>
#include "string.h"
#include "assert.h"
using namespace std;
char * my_strcpy(const char * src, char * dst)
{
assert(src != NULL);
assert(dst != NULL);
char * tmp = dst;
while (*src != '\0')
{
*dst = *src;
dst++;
src++;
}
return tmp;
}
int main()
{
char test1[] = "abcd";
char test2[sizeof(test1)] = "";
cout << my_strcpy(test1, test2) << endl;
system("pause");
return 0;
}
strncpy的实现 #include <iostream>
#include "string.h"
#include "assert.h"
using namespace std;
char * my_strncpy(const char * src, char * dst, unsigned int n)
{
assert(src != NULL);
assert(dst != NULL);
int i = 0;
int target = 0;
char * tmp = dst;
int len = strlen(src);
if (n >= len)
{
target = len;
}
else
{
target = n;
}
for ( i = 0; i < target; i++)
{
dst[i] = src[i];
}
dst[i] = '\0';
return tmp;
}
int main()
{
char test1[] = "abcd";
char test2[sizeof(test1)] = "";
cout << my_strncpy(test1, test2, 2) << endl;
system("pause");
return 0;
}
strstr的实现 #include <iostream>
#include "string.h"
#include "assert.h"
using namespace std;
int pos = 0;
const char * my_strstr(const char * str1, const char * str2)
{
assert(str1 != NULL);
assert(str2 != NULL);
while (*str1 != '\0')
{
const char * p = str1;
const char * q = str2;
const char * res = NULL;
pos++;
if (*p == *q)
{
res = p;
while (*p && *q && *q++ == *p++)
;
if (*q == '\0')
{
return (char *)res;
}
}
str1++;
}
return NULL;
}
int main()
{
const char test1[5] = "abcd";
const char test2[3] = "c";
if (my_strstr(test1, test2) == NULL)
{
cout << "cannot find!" << endl;
}
else
{
cout << "find, the pos is " << pos << endl;
cout << my_strstr(test1, test2) << endl;
}
system("pause");
return 0;
}
strchar的实现 #include <iostream>
#include "string.h"
#include "assert.h"
using namespace std;
int pos = 0;
const char * my_strchar(const char * str1, const char c)
{
assert(str1 != NULL);
while (*str1 != '\0')
{
const char * p = str1;
const char * res = NULL;
pos++;
if (*p == c)
{
res = p;
return res;
}
str1++;
}
return NULL;
}
int main()
{
const char test1[5] = "abcd";
char test2 = 'e';
if (my_strchar(test1, test2) == NULL)
{
cout << "cannot find!" << endl;
}
else
{
cout << "find, the pos is " << pos << endl;
}
system("pause");
return 0;
}
|