一个困扰小弟我们班同学两天的有关问题,高手解决,多谢各位啦!不甚感激啊

一个困扰我们班同学两天的问题,请教各位高手解决,谢谢各位啦!不甚感激啊!
小弟,C语言初学者,有什么说的不对的地方希望大家不要喷我哈,不过我还是挺感兴趣的,希望大家能帮助我哈!
这样一个问题,前几天数据结构课老师讲了substring的字串截取功能,然后就联想到C语言中的strstr函数,找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符),然后就是想不调用库函数实现这个功能,搞了两天问题重重真是纠结,不过也很有趣哈哈。
程序是这样的:
#include <stdio.h>
#include <string.h>

int main()
{
char i[]={'a','b','c','d','e','f'}, j[]={'e','f'},k[2];
int len, m, q=0, n=0;

len = strlen(j);
   

while(true)
{
for(m=0 ; m<len ; m++)
{
  k[m]=i[q++];
}

if(strcmp(j,k))
{
  n++;
  q=n;
}
else
{
  printf("%d\n", n);
  return 0;
}
  }
 
  } 
变量定义的有点乱,初学者忘大家体谅哈。。。

貌似问题挺多的,字符串存入字符数组的过程好像有错,然后如果这样写的话{}里面最后要加一个'\0',要不然好像字符数组里垃圾一大堆。

有没有大虾能帮我改改这段程序啊?在下不甚感激.....

------解决方案--------------------
#include <stdio.h>
#include <string.h>

int main()
{
char i[]={'a','b','c','d','e','f','\0'}, j[]={'e','f','\0'},k[3];
int len, m, q=0, n=0;

len = strlen(j);
while(true)
{
for(m=0 ; m<len ; m++)
{
k[m]=i[q++];
}
k[2]='\0';
if(strcmp(j,k))
{
n++;
q=n;
}
else
{
printf("%d\n", n);
return 0;
}
}
  
}
注意strcmp(比较的是两个字符串,而楼主定义的是一个字符数组,字符串是以\0结尾的,要不strcmp函数不知道该比较的什么地方)
------解决方案--------------------
C/C++ code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
    char *i="abcdefg"; 
    char *j="ef";
    char *k = (char *)malloc(3);
    int len, m, q = 0, n = 0;

    len = strlen(j);


    while(true)
    {
        for(m = 0; m < len; m++)
        {
            *(k + m) = i[q++];
        }
        *(k + 2) = '\0';

        if(strcmp(j,k))
        {
            n++;
            q = n;
        }
        else
        {
            printf("%d\n", n);
            return 0;
        }
    }

}