字符串的一个题目, 写好了代码, 帮忙找下异常.

字符串的一个题目, 写好了代码, 帮忙找下错误..
接收2个字符串,判断第1个字符串里是否包含第2个字符串,如果包含说明第2个字符串在第1个中的位置.
 题目就是这样, 我写好了代码, 有点错误, 帮忙找下...谢谢
一定要用函数输出!!

#include <stdio.h>
int count(char str1[], char str2[]);
int count(char str1[], char str2[], int cnt1);
void main()
{
char str1[50],str2[50];
int cnt1,cnt2;

printf("请输入第一个字符串的元素: \n");
gets(str1);
printf("请输入第二个字符串的元素: \n");
gets(str2);

  cnt1 = count(str1,str2);
cnt2 = count(str1,str2,cnt1);

if(cnt1>=0)
printf("第二个字符串出现在第一个字符串下标%d至%d的位置: \n",cnt1,cnt2);
else
printf("第一个字符串不包含第一个字符串: \n");
}
int count(char str1[], char str2[])
{
int cnt1;
  for(int i=0;(str1[i] != '\0') && (str2[i] != '\0');i++)
{

if(str1[i] == str2[i])
cnt1 = i;
  return cnt1;
}
}


int count(char str1[], char str2[], int cnt1)
{
int cnt2;
for(int j=cnt1;(str1[j] != '\0') && (str2[j] != '\0');j++)
{
if(str1[j] != str2[j])
cnt2 = j;
  return cnt2;
}
}

------解决方案--------------------
函数写的太混乱,功能我就不管先,语法出错在这里
C/C++ code

int count(char str1[], char str2[], int cnt1) 
{ 
int cnt2; 
for(int j=cnt1;(str1[j] !=  '\0 ') && (str2[j] !=  '\0 ');j++) 
{ 
if(str1[j] != str2[j]) 
{
  cnt2 = j;  
/////如果第一个就相等的话,那么cnt2就不能被赋值了,呵呵////
        return cnt2;
}
 ////////没被赋值就返回,肯定出错哦,这样你加个大括号看看符合不符呢你的要求
}

------解决方案--------------------
看着像c语言,所以根据你的程序意思按照c语言改了一下
不支持重载,那首先就不能定义两个同名函数count,这是第一
第二,count1是找字符串1中,字符串2起始的位置,所以应该和str2[0]比较,
第三,count2是找字符串2中,字符串匹配结束的位置,所以因该从字符串1中第一个字符匹配开始的位置和字符串2中第0个位置向下比较

当然,这个程序有很多问题,比如说上边测试的两个字符串,如果str1是 123345678,而str2是345,那么这个程序就得不到正确的结果了,如何解决呢?继续努力吧?相信你很快就有新办法的。