求字符串長度:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int mystrlen(char *fstr)
{
int num = 0;
for(;*fstr != '\0';fstr++)
{
num++;
}
//while(*fstr != '\0')
//{
//num++;
//fstr++;
//}
return num;
}
int main()
{
char str[50] = "i love you yi sheng yi shi";
int length = 0;
length = mystrlen(str);
//length = strlen(str);
printf("%d",length);
return 0;
}
字符串查詢:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int mystrlen(char *fstr)
{
int num = 0;
while(*fstr != '\0')
{
num++;
fstr++;
}
return num;
}
char* mystrstr(char *fallstr,char *faddstr,int *location)
{
int length_fallstr = mystrlen(fallstr);
int length_faddstr = mystrlen(faddstr);
int i = 0, j = 0;
int flag = 1;
char *p = NULL;
for(i = 0; i < (length_fallstr - length_faddstr); i++)
{
flag = 1; //假設是相等的
for(j = 0; j < length_faddstr; j++)
{
if(*(fallstr+i+j) != *(faddstr+j)) //出現不相等的情況
{
flag = 0;
break; //進行下一輪比較
}
}
if(flag == 1)
{
p = &fallstr[i]; //取出來第一個字母
*location = i; //記錄第一個相同字母的位置
break;//增加break得到第一個位置,不加得到最後的位置
}
}
return p; //返回第一個字母
}
char* mystrstr1(char *fallstr,char *faddstr,int *location)
{
int length_fallstr = mystrlen(fallstr);
int length_faddstr = mystrlen(faddstr);
char *pfallstr = fallstr;
char *pfaddstr = faddstr;
int flag = 1;
char *p = NULL;
for(pfallstr; *pfallstr != '\0'; pfallstr++)
{
flag = 1; //假設是相等的
for(pfaddstr; *pfaddstr != '\0'; pfaddstr++)
{
if(*(pfallstr+(pfaddstr-faddstr)) == '\0') //防止溢出
{
flag = 0;
break; //進行下一輪比較
}
if(*(pfallstr+(pfaddstr-faddstr)) != *pfaddstr) //出現不相等的情況
{
flag = 0;
break; //進行下一輪比較
}
}
if(flag == 1)
{
p = pfallstr; //取出來第一個字母
*location = pfallstr-fallstr; //記錄第一個相同字母的位置
break;//增加break得到第一個位置,不加得到最後的位置
}
}
return p; //返回第一個字母
}
int main()
{
char allstr[50] = "i love you yi sheng yi shi";
char addstr[30] = "yi";
char *p = NULL;
int location = 0;
//p = strstr(allstr,addstr); //C編譯器自帶函數
//p = mystrstr(allstr,addstr,&location);//以下標循環的方式查詢
p = mystrstr1(allstr,addstr,&location);//以指針循環的方式查詢
if(p)
{
printf("find\n");
printf("location is %d,first alphabet is %c\n",location,*p);
}
else
printf("no find\n");
return 0;
}
字符串查詢:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int mystrlen(char *fstr)
{
int num = 0;
while(*fstr != '\0')
{
num++;
fstr++;
}
return num;
}
char* mystrstr(char *fallstr,char *faddstr,int *location)
{
int length_fallstr = mystrlen(fallstr);
int length_faddstr = mystrlen(faddstr);
int i = 0, j = 0;
int flag = 1;
char *p = NULL;
for(i = 0; i < (length_fallstr - length_faddstr); i++)
{
flag = 1; //假設是相等的
for(j = 0; j < length_faddstr; j++)
{
if(*(fallstr+i+j) != *(faddstr+j)) //出現不相等的情況
{
flag = 0;
break; //進行下一輪比較
}
}
if(flag == 1)
{
p = &fallstr[i]; //取出來第一個字母
*location = i; //記錄第一個相同字母的位置
break;//增加break得到第一個位置,不加得到最後的位置
}
}
return p; //返回第一個字母
}
char* mystrstr1(char *fallstr,char *faddstr,int *location)
{
int length_fallstr = mystrlen(fallstr);
int length_faddstr = mystrlen(faddstr);
char *pfallstr = fallstr;
char *pfaddstr = faddstr;
int flag = 1;
char *p = NULL;
for(pfallstr; *pfallstr != '\0'; pfallstr++)
{
flag = 1; //假設是相等的
for(pfaddstr; *pfaddstr != '\0'; pfaddstr++)
{
if(*(pfallstr+(pfaddstr-faddstr)) == '\0') //防止溢出
{
flag = 0;
break; //進行下一輪比較
}
if(*(pfallstr+(pfaddstr-faddstr)) != *pfaddstr) //出現不相等的情況
{
flag = 0;
break; //進行下一輪比較
}
}
if(flag == 1)
{
p = pfallstr; //取出來第一個字母
*location = pfallstr-fallstr; //記錄第一個相同字母的位置
break;//增加break得到第一個位置,不加得到最後的位置
}
}
return p; //返回第一個字母
}
int main()
{
char allstr[50] = "i love you yi sheng yi shi";
char addstr[30] = "yi";
char *p = NULL;
int location = 0;
//p = strstr(allstr,addstr); //C編譯器自帶函數
//p = mystrstr(allstr,addstr,&location);//以下標循環的方式查詢
p = mystrstr1(allstr,addstr,&location);//以指針循環的方式查詢
if(p)
{
printf("find\n");
printf("location is %d,first alphabet is %c\n",location,*p);
}
else
printf("no find\n");
return 0;
}