24小时热门版块排行榜    

查看: 304  |  回复: 1

zhixia

新虫 (小有名气)

[求助] C 递归法读取字符串

虹软2012年招聘笔试题目:
要求用递归方法逐个读取n个字符,并逆序输出,下面的函数几乎已经对了,可在分配空间的时候,第一个值怎么都不对,希望高手赐教,谢谢了!

#include
#include
#include
#include

char* read(char *temp);
void write(char* str);

int main()
{
        char *str;
        int n;

        printf("the number of input char is:\n";
        scanf("%d\n",&n);

        str=(char*)malloc((n)*sizeof(char));
        *(str+n)='\0';

        str=read(str);
        printf("the nomal string is:%s\n",str);

        write(str);

        return 0;
}

char* read(char *temp)
{

        if(*(temp+1)=='\0')
        {
                scanf("%c",temp);
        }
        else
        {
                scanf("%c",read(temp+1));       
        }
        return temp-1;       
}

void write(char* str)
{
        if(*str=='\0')
                ;//return;
        else
        {
                write(str+1);
                printf("%c\n",*str);
        }
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

感谢参与,应助指数 +1
str=(char*)malloc((n)*sizeof(char));
-------------
读n个字符,你得分配n+1个空间吧,还有最后一个\0
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2012-10-25 19:12:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhixia 的主题更新
信息提示
请填处理意见