我知道有一个strchr函数可以查子串位置,但该函数只能处理字符串,对于含有零的字节串无能为力。因此,请写一个源可以是字节串,目标是字符串的类似函数。原型大概如下:
int FindStr( char *src , int src_len , char *tar )
若字节串 src 中不包含 tar, 返回 -1;
若字节串 src 中包含tar, 返回首字节所在位置。
如果有描述不清楚的地方请询问。谢谢。
求标准C语言,查找某字符串在指定字节串中的位置代码。
答案:2 悬赏:10 手机版
解决时间 2021-03-21 07:28
- 提问者网友:沉默的哀伤
- 2021-03-20 15:30
最佳答案
- 五星知识达人网友:蓝房子
- 2021-03-20 15:53
#include
#include
int FindStr(char* source, char* target)
{
int i,j;
int s_len=strlen(source);
int t_len=strlen(target);
if(t_len>s_len)
{
return -1;
}
for(i=0;i<=s_len-t_len;i++)
{
j=0;
int flag=1;
if(source[i]==target[j])
{
int k,p=i;
for(k=0;k
{
if(source[p]==target[j])
{
p++;
j++;
continue;
}
else
{
flag=0;
break;
}
}
}
else
{
continue;
}
if(flag==1)
{
return i+1;
}
}
return -1;
}
int main(int argc, char *argv[])
{
char s1[50]={"\0"};
char s2[50]={"\0"};
fflush(stdin);
scanf("%[^\n]",s1);
fflush(stdin);
scanf("%[^\n]",s2);
int re=FindStr(s1,s2);
printf("%d",re);
return 0;
}
#include
int FindStr(char* source, char* target)
{
int i,j;
int s_len=strlen(source);
int t_len=strlen(target);
if(t_len>s_len)
{
return -1;
}
for(i=0;i<=s_len-t_len;i++)
{
j=0;
int flag=1;
if(source[i]==target[j])
{
int k,p=i;
for(k=0;k
if(source[p]==target[j])
{
p++;
j++;
continue;
}
else
{
flag=0;
break;
}
}
}
else
{
continue;
}
if(flag==1)
{
return i+1;
}
}
return -1;
}
int main(int argc, char *argv[])
{
char s1[50]={"\0"};
char s2[50]={"\0"};
fflush(stdin);
scanf("%[^\n]",s1);
fflush(stdin);
scanf("%[^\n]",s2);
int re=FindStr(s1,s2);
printf("%d",re);
return 0;
}
全部回答
- 1楼网友:洒脱疯子
- 2021-03-20 17:05
你好!
含有0的字符串意义何在
如有疑问,请追问。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯