首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

calloc内存分配的有关问题

2013-08-10 
calloc内存分配的问题写了一个函数如下gboolean is_text_valid(const char *text, gchar **tmp){//判断是

calloc内存分配的问题
写了一个函数如下


gboolean is_text_valid(const char *text, gchar **tmp){      //判断是否是有效输
    int i, start, end, len;                                 //入并截取有效部分
    start = 0;end = 0;len = 0;
    while(isspace(*(text + start)) && (text + start != NULL))
        start++;
    end+=start;
    while(isalpha(*(text + end)) && (text + end != NULL))
        end++;
    if(!(len = end - start))
        return FALSE;
    *tmp = (gchar *)calloc(len, sizeof(char));
    for(i = 0; i < len; i++)
        *(*tmp + i)  = tolower(*(text + start + i));
//    *(*tmp + len) = '\000';
    return TRUE;
}

作用就是截取text前面所有空白符之后到第一个不是字母的部分,再拷贝到*tmp
所指内存去
问题是当text是例如"abcdefghijkl"时,*tmp就是"abcdefjhijkl?"之类的。
后面多出问号,括号乱码什么的,谢谢各位帮忙看一下
[解决办法]
  *tmp = (gchar *)calloc(len, sizeof(char));
-----------------------------------------
  *tmp = (gchar *)calloc(len + 1, sizeof(char));  //用于存放 '\0'

//    *(*tmp + len) = '\000';   //这个要加,不能取消
[解决办法]

*tmp = (gchar *)calloc(len, sizeof(char));
 memset(tmp, 0, sizeof(char)*len ); //作下清零操作

热点排行