C语言指针有关问题,麻烦哪位大神帮看看代码为什么输出乱码

C语言指针问题,麻烦哪位大神帮看看代码为什么输出乱码
#include <stdio.h>
#include <string.h>

char *m_strcpy(char *strDest, const char *strSrc)
{
    if (strDest == NULL && strSrc == NULL)
        return NULL;
    if (strDest == strSrc)
        return strDest;
    char *temp = strDest;
    while ((*strDest++ = *strSrc++) != '\0')
        return temp;
}

int main()
{
    char me[30] = "what is your name?";
    char srcme[30];
    char *what = m_strcpy(srcme, me);
    printf("%s\n",what);
    return 0;
}
C 指针 乱码

------解决方案--------------------
这里出问题了。 

   while ((*strDest++ = *strSrc++) != '\0')
        return temp;
------解决方案--------------------
(1) :    
while ((*strDest++ = *strSrc++) != '\0');
        return temp;

while 行缺少  ";"

(2) :

   if (strDest == NULL && strSrc == NULL) // 这里应该是 
------解决方案--------------------
 不是 &&
        return NULL;