余晖~ 2022-04-22 23:16 采纳率: 90.3%
浏览 160
已结题

大学数据结构的strassign函数c语言实现有个地方请教

问题遇到的现象和发生背景

问题在代码中用注释表明

问题相关代码,请勿粘贴截图
int strassign(Str& str, char* ch)
{
    if(str.ch)
        free(str.ch);  // 释放原串的空间,赋值的时候会重新给它分配相应的空间
    int len = 0;
    char *c = ch;      // 定义一个c指针用来指向要进行赋值的字符串
    while(*c) {        // 求ch串的长度
        ++len;
        ++c;
    }
    if(len == 0) {     // 如果ch为空串,则直接返回空串
        str.ch = NULL;
        str.length = 0;
        return 1;
    }
    else {
        str.ch = (char*)malloc(sizeof(char) * (len + 1));
        // 取len + 1是为了多分配一个空间存放“\0”字符
        if(str.ch == NULL)            // 就是这个地方,为什么分配了空间还会有等于NULL的情况呢?
            return 0;
        else {
            c = ch;
            for(int i = 0; i <= len; ++i, ++c)
                str.ch[i] = *c;
       /*注意:循环条件中之所以用“<=”,是为了将ch最后的‘\0’复制到新串中最为结束标记*/
            str.length = len;
            return 1;
        }
    }
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 4月30日
    • 创建了问题 4月22日

    悬赏问题

    • ¥20 python忆阻器数字识别
    • ¥15 无法输出helloworld
    • ¥15 高通uboot 打印ubi init err 22
    • ¥20 PDF元数据中的XMP媒体管理属性
    • ¥15 R语言中lasso回归报错
    • ¥15 网站突然不能访问了,上午还好好的
    • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
    • ¥15 semrush,SEO,内嵌网站,api
    • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
    • ¥15 振荡电路,ADS仿真