user-0 提问: 如何用C语言实现以下代码

回复:
user: user-1
content: char mumstr[256]={}; char childstr[256]={};  char* res=strstr(mumstr,childstr);  if(res==NULL){     printf("－1\n"); }  printf("%d\n",(int)(res－mumstr));

user: user-2
content: 可否如此：只做一个循环（母串依次后移），把母串当前位置到与匹配串相同长度数据拷贝到过程量，用字符串比较函数判断二者是否相等，如果相等返回循环值，否则继续；最后没有匹配项，则返回-1。

user: user-3
content: 楼上有正解，参考一下

user: user-4
content: 操作指针啊，返回的int pos=pStr-str1，pos就是下标，如果是位置的话就再+1

user: user-0
content: 引用 21 楼 离水的鱼儿的回复:char *str=“50” char *str1=“1050” char*pStr=strstr（str1，str）; 如果找到了 pStr存储的就是查找的字符串首地址，否则为空。 这个我知道了，就是不知道怎么读出在数组的位数

user: user-4
content: char *str=“50” char *str1=“1050” char*pStr=strstr（str1，str）; 如果找到了 pStr存储的就是查找的字符串首地址，否则为空。

user: user-5
content: 19楼正解，楼主可以参考。

user: user-6
content: #include <stdio.h> #include<string.h>  int cmp(char* p1, char* p2) { 	int temp = 0,temp1=0; 	char* p3 = p2; 	for (char* p4=p1; *p1 != '\0'; p1++) 	{ 		 		for (p2 = p3; *p2 != '\0'; p2++) 		{  			if (*p2 == *p1) 			{ 				char* p5 = p1; 				for (; (*p2 != NULL) && (*p1 != NULL); p2++, p1++) 				{ 					if (*p2 == *p1) { temp = 1; temp1 =( p5 - p4)+1; 					} 					else { temp = 0; temp1 = 0; break; } 				}  			} 			if (temp == 1)break; 		} 		if (temp == 1)break; 	} 	return temp1; } int main(void) {

user: user-7
content: strstr看一下，字数字数

user: user-6
content: #include <stdio.h> #include<string.h>  int cmp(char* p1, char* p2) { 	int temp = 0; 	char* p3 = p2; 	for (int i = 0; *p1!= '\0'; p1++) 	{ 		for (p2=p3; *p2!= '\0'; p2++) 		{  			if (*p2 == *p1) 			{ 				for (; (*p2 != NULL) && (*p1 != NULL); p2++,p1++) 				{ 					if (*p2 == *p1) { temp = 1; } 					else { temp = 0; break; } 				} 				 			}  		} 	} 	return temp; } int main(void) { 	char digit1[10]; 	char digit2[10]; 	 	int i, j, temp = 0; 	printf("请输入第一个数字串：\n"); 	gets_s(digit1); 	printf("请输入第二个数字串：\n"); 	gets_s(digit2); 	char* p1=NULL, * p2=NULL; 	int a = strlen(digit1); 	int b = strlen(digit2); 	if (strlen(digit1) <=strlen(digit2)) 	{ 		p1 = digit2; 		p2 = digit1; 	} 	else 	{ 		p1 = digit1; 		p2 = digit2; 	} 	temp = cmp(p1, p2); 	printf("%d", temp);  	return 0; }  这一段代码可以 ，我编译过了，有问题可以联系我

user: user-7
content: 这个要自己去想，想不出来就用现成函数算了  https://blog.csdn.net/huan447882949/article/details/82852423

user: user-0
content: 引用 15 楼 user-7的回复:[quote=引用 14 楼 qq_45768871 的回复:] [quote=引用 13 楼 user-7的回复:][quote=引用 12 楼 qq_45768871 的回复:] [quote=引用 11 楼 user-7的回复:]digit2[i]==NULL这个根本就不对！而且字符建议用'\0'增加可读性 digit2[i] != '\0' 这个解决了，但是还是没有发哪里逻辑有问题[/quote]  你这个大角度的思路就不对了，潜在的嵌入的字符串，是需要跟随比较的（同时移动位置），这个根本就不对路，逻辑就更不需要考虑了[/quote] 同时移动？有点不明白[/quote]  真是晕啊，好比你给的例子，遇到5相等的，接下来要同时往后移动，看看0是不是也相等，所以要到所有的字符都对上，你才能认为确实是内嵌啊。建议你写程序的时候，把思路全部捋清楚并且能用脑子来运行一下，才能对题。你这样完全就是跑题了[/quote] 那这个应该怎么写呢？

user: user-7
content: 引用 14 楼 qq_45768871 的回复:[quote=引用 13 楼 user-7的回复:][quote=引用 12 楼 qq_45768871 的回复:] [quote=引用 11 楼 user-7的回复:]digit2[i]==NULL这个根本就不对！而且字符建议用'\0'增加可读性 digit2[i] != '\0' 这个解决了，但是还是没有发哪里逻辑有问题[/quote]  你这个大角度的思路就不对了，潜在的嵌入的字符串，是需要跟随比较的（同时移动位置），这个根本就不对路，逻辑就更不需要考虑了[/quote] 同时移动？有点不明白[/quote]  真是晕啊，好比你给的例子，遇到5相等的，接下来要同时往后移动，看看0是不是也相等，所以要到所有的字符都对上，你才能认为确实是内嵌啊。建议你写程序的时候，把思路全部捋清楚并且能用脑子来运行一下，才能对题。你这样完全就是跑题了

user: user-0
content: 引用 13 楼 user-7的回复:[quote=引用 12 楼 qq_45768871 的回复:] [quote=引用 11 楼 user-7的回复:]digit2[i]==NULL这个根本就不对！而且字符建议用'\0'增加可读性 digit2[i] != '\0' 这个解决了，但是还是没有发哪里逻辑有问题[/quote]  你这个大角度的思路就不对了，潜在的嵌入的字符串，是需要跟随比较的（同时移动位置），这个根本就不对路，逻辑就更不需要考虑了[/quote] 同时移动？有点不明白

user: user-7
content: 引用 12 楼 qq_45768871 的回复:[quote=引用 11 楼 user-7的回复:]digit2[i]==NULL这个根本就不对！而且字符建议用'\0'增加可读性 digit2[i] != '\0' 这个解决了，但是还是没有发哪里逻辑有问题[/quote]  你这个大角度的思路就不对了，潜在的嵌入的字符串，是需要跟随比较的（同时移动位置），这个根本就不对路，逻辑就更不需要考虑了

user: user-0
content: 引用 11 楼 user-7的回复:digit2[i]==NULL这个根本就不对！而且字符建议用'\0'增加可读性 digit2[i] != '\0' 这个解决了，但是还是没有发哪里逻辑有问题

user: user-7
content: digit2[i]==NULL这个根本就不对！而且字符建议用'\0'增加可读性 digit2[i] != '\0'

user: user-0
content: 引用 9 楼 user-7的回复:[quote=引用 2 楼 qq_45768871 的回复:] [quote=引用 1 楼 user-7的回复:]strstr看一下，字数字数 但是不知道怎么实现，逻辑有点问题[/quote]  逻辑有问题的代码，可以贴出来一下[/quote] #include<stdio.h> #include<string.h> int main() { 	char digit1[10]; 	char digit2[10]; 	int i,j,temp=0; 	printf("请输入第一个数字串：\n"); 	gets(digit1); 	printf("请输入第二个数字串：\n"); 	gets(digit2); 	for(i=0;digit2[i]==NULL;i++) 	{ 		for(j=0;digit1[j]==NULL;j++) 		{  		if(digit2[i]==digit1[j])  		{ 			temp=j+1;	 			break; 		}  		} 	} 	printf("%d",temp); 	return 0; }    只实现一个的逻辑有问题

user: user-7
content: 引用 2 楼 qq_45768871 的回复:[quote=引用 1 楼 user-7的回复:]strstr看一下，字数字数 但是不知道怎么实现，逻辑有点问题[/quote]  逻辑有问题的代码，可以贴出来一下

user: user-0
content: 引用 7 楼 wowpH的回复:[quote=引用 6 楼 qq_45768871 的回复:] [quote=引用 5 楼 wowpH的回复:]我发的链接，不要选择性忽略（内心：不要选择性眼瞎）。 用的是手机，没有看到在哪结帖[/quote]哦哦，手机不能结贴。[/quote] 好吧，那我用电脑试一下吧。