请大家帮小弟我看一下,小弟我写的函数如何会死循环呢,自己实在找不出原因了,

请大家帮我看一下,我写的函数怎么会死循环呢,自己实在找不出原因了,急.
//-----------------------------------
#include   <clx.h>
#pragma   hdrstop
#include   <iostream.h>
//------------------------------------函数qq要求:它从一特定位置开始扫描一字符串,返回所遇到的第一个词,即第一个不含空格的连续的字符序列,如字符串 "what   is   your   name? "中就包含了4个词.
但是我下面写的这个程序,不知道怎么搞的死循环什么也输出不出来,请大家看看.
char   *qq(char   *c)
{
                while(*c== '   ')
                                c++;
                char   *   temp_c= "a ";
                while(*c   &&   *c   !=   '   ')
                                {
                                                *(temp_c)=*c;
                                                temp_c++;
                                                c++;
                                }
                                *temp_c= '\0 ';
                                return   temp_c;
}
#pragma   argsused
int   main(int   argc,   char*   argv[])
{
        char   s[]= "what   is   your   name? ",*ps=s;
        do
        cout < <qq(ps) < <endl;
        while(*ps);
        cin.get();
        return   0;
}


------解决方案--------------------
因为char word[81];是在栈中开辟的空间,它在进入char *qq(char *c)时被初始化,在从qq中返回时就无效了,所以即使你使用return word;返回这个数组的首地址,在调用cout时,这块地址的内容就被修改了。
把char word[81];换成char *word = new char[81];就行了
不过要记得在cout之后释放,否则会造成内存泄漏。