C系列函数原型之-StrStr(char *str,char *subStr)的实现

思路:

1、对于字符串最后一位为‘\0‘,可以作为临界条件

2、当*str != ‘\0‘的时候,判断*p是否等于*q,如果相等继续后移2个指针,如果最后*q的指针到达边界,说明整个匹配是成功的,直接返回res即可。否则后移主串指针。

#include <iostream>

char *Mystrstr(char *str,char *subStr){

while (*str !=‘\0‘ ) {

char *p = str;

char *q = subStr;

char *res =NULL;

if (*p == *q) {

res = p;

while (*q !=‘\0‘ && *p == *q){

p++;

q++;

}

if (*q ==‘\0‘)

return res;

}

str++;

}

returnNULL;

}

int main(int argc,const
char * argv[])

{

char *s1 ="abcdefghijklmn";

char *s2 ="bcd";

// 在字符串s1中寻找字符串2,若找到返回位置,否则返回Null

char *res =Mystrstr(s1, s2);

if (res !=NULL) {

printf("%s",res);

}else{

printf("not");

}

printf("\n");

return0;

}

结果:

时间: 2024-11-09 03:13:17

C系列函数原型之-StrStr(char *str,char *subStr)的实现的相关文章

编写一个函数char_contains(char str[],char c), 如果字符串str中包含字符c则返回数值1,否则返回数值0

/* 编写一个函数char_contains(char str[],char c), 如果字符串str中包含字符c则返回数值1,否则返回数值0 */ #include <string.h> #include <stdio.h> // 可读性 -> 性能 -> 精简(重构) int char_contains(char str[], char c); int main() { //int result = char_contains("itc8ast"

C语言 将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数 函数原型:double my_atof(char *str)

编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数.负浮点数) 例如:"12.34"  返回12.34 "-123.34" 返回-123.34 函数原型:doublemy_atof(char *str) 提示: 需要在函数中判断负号,小数点,还要判断是不是数字字符.在判断小数点时需定义一个计数器来计算小数点后数字字符的个数. #include <stdio.h> #include <math.h> double my_at

fopen\fread\fwrite\fscanf\fprintf\fseek\feof\rewind\fgets\fputc等系列函数使用总结

转载自:http://blog.csdn.net/xidianzhimeng/article/details/23541289 1 fopen 函数原型:FILE * fopen(const char * path,const char * mode); 返回值:文件顺利打开后,指向该流的文件指针就会被返回.如果文件打开失败则返回NULL,并把错误代码存在errno 中. fopen_s,_wfopen_s安全性上相对于fopen有所增强,如果成功则返回0,失败则返回响应的错误代码 errno_

sprintf系列函数

1 简介和功能 字符串格式化命令,主要功能是把格式化的数据写入某个字符串中.sprintf 是个变参函数. 把格式化的数据写入某个字符串缓冲区. 2 函数原型 int sprintf( char *buffer, const char *format, [ argument] - ); buffer:char型指针,指向将要写入的字符串的缓冲区. format:格式化字符串. [argument]...:可选参数,可以是任何类型的数据. 3 返回值 返回写入buffer 的字符数,出错则返回-1

为下面的函数原型编写函数定义:int ascii_to_integer(char *str)

为下面的函数原型编写函数定义: int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数.如果字符串参数包含了任何非数字字符,函数就返回零.请不必担心算数溢出. 提示:这个技巧很简单:你每发现一个数字,把当前值乘以10,并把这个值和新的数字所代表的值相加.字符指针减去'0'即将其对应的ASCII码值转换为整型. #include <stdio.h> int ascii_to_integer(char

【C语言】为下面的函数原型编写函数定义: int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。

/*<p>为下面的函数原型编写函数定义:</p><p>int ascii_to_integer(char *str);</p><p>这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数.</p><p><span style="font-family: Arial, Helvetica, sans-serif;">如果字符串参数包含了任何非数字字符,函数就返回

在函数体内声明[1] char *str=”abc”;和[2] char str[]={‘a’,’b’,’c’}有什么区别?

在函数体内声明[1] char *str="abc";和[2] char str[]={'a','b','c'}有什么区别 1.   [1][2]中str变量都分配在栈上:备注:([1]是字符指针,准确的说类似于字符串数组的功能 ,等价于 char str[]="abc", [2]是字符数组) sizeof()和strlen()计算的时候不一样 2.    [1]中str指向常量存储区的字符串"abc",其中字符串末尾会补0 3.    [2]中

已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc),编写函数 strcpy

已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串.不调用C++/C 的字符串库函数,请编写函数 strcpy. /*编写strcpy函数(10分)已知strcpy函数的原型是??? char *strcpy(char *strDest, const char *strSrc);??? 其中strDest是目的字符串,strSrc是源字符串.(1)不调用C++/C的字

编写函数int count_number_string(char str[])和函数int maxnum_string(char str[])

题目如图: 这里不再赘述 代码: //字符串中统计与查询 //杨鑫 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXN 1000 char Str[MAXN]; /* *寻找字符串中最大的整数 * */ int maxnum_string(char str[]) { int i = 0, n = 0, maxNum = 0; while(str[i] != '\0') { if(