C 函数的声明定义
#include <stdio.h>
extern char* mystrstrPoint(char* dest, char* src);
extern char* mystrstrArr(char* dest, char* src);
extern char* mystrcat(char* dest, char* src);
extern void mybubblesort(char** sort_str, int len);
int main()
{
char dest_str[] = "aasdfbdfcabc sd ";
char src_str[] = "abc";
char* p = mystrstrPoint(dest_str, src_str);
printf("指针实现:%s\n",p);
char* pp = mystrstrArr(dest_str, src_str);
printf("数组实现:%s\n", pp);
char dest_arr[100] = "hello";
char * src_arr = "world";
char* ppp = mystrcat(dest_arr, src_arr);
printf("字符串拼接:%s\n", ppp);
printf("字符串拼接:%s\n", dest_arr);
char str_arr[] = "hello world";
char* p_arr = str_arr;
*p_arr = 'A';
p_arr++;
*p_arr = 'B';
printf("%s\n",str_arr);
printf("%d\n", sizeof(str_arr));
printf("%d\n", strlen(str_arr));
printf("%d\n", sizeof(p_arr));
printf("%d\n", strlen(p_arr));
char* str_point = "hello world";
printf("%s\n", str_point);
printf("%c\n", str_point[0]);
char* p_str = str_point;
printf("%s\n", p_str);
printf("--------------\n");
char * sort_str[] = { "astudent","dtree","cnew","bbee" };
mybubblesort(sort_str,4);
for (int i=0;i<4;i++)
{
printf("%s\n", sort_str[i]);
}
system("pause");
return 0;
}
void mybubblesort(char** arr,int len)
{
/* student tree new bee */
int flag = 1;
char * temp;
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len - i-1; j++)
{
if (arr[j][0] > arr[j + 1][0])
{
flag = 0;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
if (flag)
return;
flag = 1;
}
}
char* mystrcat(char* dest, char* src)
{
char* start = dest;
while (*dest)
dest++;
while (*dest++ = *src++);
*dest = '\0';
return start;
}
char* mystrstrArr(char* dest, char* src)
{
int i = 0;
int j = 0;
int counter = 0;
int len = strlen(src);
while (dest[i])
{
counter = 0;
printf("i:%d\n",i);
while (dest[i] == src[j] && dest[i])
{
printf("%c,%c\n", dest[i], src[j]);
i++;
j++;
counter++;
}
if (counter == len)
{
return &dest[i - counter];
}
else
{
i -= counter;
j = 0;
}
i++;
}
return NULL;
}
char* mystrstrPoint(char* dest, char* src)
{
char* temp = NULL;
char* p = NULL;
int count = 0;
while (*dest)
{
printf("第%d次循环\n", count+1);
temp = src;
p = dest;
while (* dest == * temp && *dest != '\0')
{
printf("%c,%c\n",*dest,*temp);
dest++;
temp++;
}
if (!*temp)
return p;
else
dest = p;
dest++;
count++;
}
return NULL;
}