| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1385 人关注过本帖
标题:关于c语言malloc函数开辟字符串的问题!
只看楼主 加入收藏
AleTiff
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:64
专家分:157
注 册:2015-3-30
收藏
得分:0 
回复 10楼 AleTiff
不好意思,上述函数严格地分析,存在一个小 BUG,允许我修正一下:

程序代码:
char* gets_safe()
{
    const int LENGTH = 1;
    size_t len = 0;
    char* ret = NULL;
    char buffer[LENGTH + 1] = {0};

    while( LENGTH != 0 ){
        size_t iLen = 0;
        if( fgets(buffer, LENGTH + 1, stdin) == NULL ){
            buffer[0] = 0;
            break;
        }
        iLen = strlen(buffer);
        if(iLen != 0){
            if( ret == NULL )
                ret = (char*)malloc(iLen + 1);
            else{
                char* tmp = (char*)malloc(len + iLen + 1);
                strncpy(tmp, ret, len);
                free(ret);
                ret = tmp;
            }
            strncpy(ret + len, buffer, iLen);
            len += iLen;
            ret[len] = 0;
        }
        if(buffer[iLen - 1] == 0x0A){
            ret[len - 1] = 0;
            break;
        }
    }
    fflush(stdin); // 在这个函数将要退出前,对 stdin 里应该给予清空处理
    return ret;
}
2015-04-13 12:14
快速回复:关于c语言malloc函数开辟字符串的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039912 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved