本题要求实现一个字符串查找的简单函数。
函数接口定义
char *search( char *s, char *t );
函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL。
裁判测试程序样例:
#include <stdio.h>
#define MAXS 30
char *search(char *s, char *t);
void ReadString( char s[] ); /* 裁判提供,细节不表 */
int main()
{
char s[MAXS], t[MAXS], *pos;
ReadString(s);
ReadString(t);
pos = search(s, t);
if ( pos != NULL )
printf("%d\n", pos - s);
else
printf("-1\n");
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例1:
The C Programming Language
ram
输出样例1:
10
输入样例2:
The C Programming Language
bored
输出样例2:
-1
答案代码块
char *search(char *s, char *t){
int i , l;
int cnt = 0 ; //用作判断
char *p ;
for (i = 0; s[i] != '\0' ; i++){
for( l = 0 ; t[l] != '\0' ; l++){
if(s[i+l] == t[l]){ //循环判断字符串是否相等
cnt = 1;
}else{ //如果有一个不相等则跳出循环
cnt = 0;
break;
}
}
if( cnt ){ //cnt为真时
p = &s[i]; //将找到的首地址返回
return p;
}
}
return 0;
}
本文介绍了一个简单的字符串查找函数的实现方法,该函数能在主字符串中查找子字符串,并返回子字符串的起始位置。若未找到,则返回-1。示例代码展示了如何使用此函数进行字符串匹配。
334





