C语言编程:输入母字符串、子字符串,输出子字符串中首字母在在母字符串中的位置,求高手解题……

Python018

C语言编程:输入母字符串、子字符串,输出子字符串中首字母在在母字符串中的位置,求高手解题……,第1张

#include <stdio.h>

int substrpos(char *s,char *t) { // 返回字符串s中包含子串t的首字母位置

char *p = s,*q,*pt

int pos

while(*p) {

q = t

pos = p - s

pt = p

while(*q++ == *pt++)

if(*--q == '\0') return pos

++p

}

return -1

}

int main () {

char s[] = "asjhfeasjdeasjdiaske",t[] = "sk"

int pos = substrpos(s,t)

if(pos >= 0) printf("%s 在 %s 中首字符位置是 : %d\n",t,s,pos)

else printf("%s 中不包含 %s。\n",s,t)

return 0

}

在string.h里有个strstr方法是用来查找子字符串的,但一般不能用这个方法,通常的方法就是假定有一个字符串s,长度为a(长度可以由strlen求出或者自己算),子字符串s1长度为b,那么从s的第0个字符开始(i),到a-b+1为止,逐一用strncmp比较s1是否与s+i开始的长度为b的字符相等,如果相等,i就是当前的位置了

#include<stdio.h>

#include<string.h>

#define N 100

void main() {

char s[N],s1[N]

int i,a,b,k=-1

gets(s)

gets(s1)

a=strlen(s)

b=strlen(s1)

for(i=0i<a-b+1i++) {

if((strncmp(s1,s+i,b))==0) {

k=i

break

}

}

if(k>-1)

printf("%d",k)

else printf("not found")

}