/*
实现字符串处理函数
字符串长度获取strlen
字符串连接 strcat
字符串比较 strcmp
字符串查询 strfind(char * a,char * b); 返回字符串b在字符串a的位置
"hello nihao","nni" 6,如果不存在返回-1
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//字符串长度获取strlen
int mystrlen(char * mystring);
// 字符串连接 strcat
static char* mystrcat(char * mystring1,char * mystring2);
//字符串比较 strcmp
int mystrcmp(char * mystring1,char * mystring2);
//字符串查询 strfind(char * a,char * b); 返回字符串b在字符串a的位置
int strfind(char * mystring1,char * mystring2);
int main(int argc, const char * argv[])
{
static char *a = {"asdfgbnf"};
static char *b = {"fg"};
int l = mystrlen(a);
printf("\n字符串长度为:%d ",l);
mystrcmp(a,b);
//strfind(a,b);
printf("\n%d",strfind(a,b));
char * str = mystrcat(a,b);
printf("\n字符串连接后为%s",str);
return 0;
}
int mystrlen(char * mystring)
{
int len = 0;
while (*(mystring + len) != '\0')
{
len++;
}
return len;
}
static char* mystrcat(char mystring1[],char mystring2[])
{
int i = 0;
int j = 0;
char *mystring;
mystring= (char*)malloc(sizeof(char)*(mystrlen(mystring1)+mystrlen(mystring2)));
while(mystring1[i] !='\0')
{
mystring[i] = mystring1[i];
i++;
}
while(mystring2[j] != '\0')
{
mystring[i+j]=mystring2[j];
j++;
}
mystring[i+j]='\0';
return (mystring);
free(mystring);
}
int mystrcmp(char * mystring1,char * mystring2)
{
int i=0;
while (1) {
if(mystring1[i]==mystring2[i])
{
if(mystring1[i]=='\0')
{
printf("\n两个字符串相等");
return 0;//两个字符串相等
}
i++;
}else
{
if(mystring1[i]>mystring2[i])
{
printf("\n字符串1>字符串2");
return 1;
}
else
{
printf("\n字符串1<字符串2");
return -1;
}
}
}
}
int strfind(char * mystring1,char * mystring2)
{
int set = 0; //返回的字符串位置
int n = 0; //连续相同字符个数
int l = mystrlen(mystring2);
for (int i = 0; mystring2[i] != '\0'; i++)
{
for (int j = 0; mystring1[j] != '\0'; j++)
{
if (mystring1[j]==mystring2[i])
{
set = j;
n++;
i++;
if (n == l)
{
return (set - n + 1);
}
}else
{
set = -1;
}
}
}
return set;
}