DAVID J.马兰:所以事实证明, 复制一个字符串是不是几乎一样 简单的复制一个原始的, 像int或浮点数。 毕竟,引擎盖下方的字符串 是一个字符序列。 所以复制的字符串,因此,具有以 涉及抄袭的全序列 字符。 让我们把注意力转回了 最后的实施和撕裂了这 线,串T等于s,这 显然是不够的。 让我们用一条线代替它了 看起来,相反,像这样。 串T得到的字符串长度的malloc 一个char第加1倍。 现在有报价有点打算 在这行代码。 首先,malloc的,短期的记忆 分配,以及 功能做到了这一点。 给定一个整数,它返回到您的 的内存块的地址 很多字节。 与此同时,s的串长度加1 是为了表示我们要为 多少个字节为s已经占据, 包括空终止时, 反斜线0在一个字符串的末尾。 同时,我不一定记得 多大的char是,即使 虽然在大多数系统上,它只是1 字节,所以我会打电话给字符的大小 动态计算出有多大 个人性格。 一旦相乘,我回来了 我需要的总字节数。 但是如果失败的malloc什么 返回我们所需要的内存? 我想最好是检查如下。 如果t等于null,然后我第一次去 自由秒,返回由获得内存 字符串,然后我要去 返回1,表示错误。 但是,如果一切顺利,我将继续 使用一个四循环和迭代 如下。 对于int我得到0,n等于 s的字符串的长度。 我要做到这一点,只要我是 小于或等于n,这样我 通过与包括重复了 空终止字符在s中。 并在每次迭代中,我 要增加我。 同时,该环的内侧,复制 的s i个字符到T的第i个 位置,只需做T 支架我得到s支架I。 我想最好加一个额外的 行我的代码。 特别是,因为我现在使用 malloc的,要求的内存,这是我的 责任,以释放该存​​储器 当我用它我做的,就像我们 要释放内存这 通过GET字符串给我们。 所以在这个节目的最后,我 要添加一个额外的行 在返回前释放T 0表示成功。 现在,让我们保存,编译,和 运行这个新的程序。 让副本1点斜线副本1。 我会这样说 你好全部用小写。 幸好,这时候我的 原来保持不变。 你好全部用小写。 但副本,的确,资本化。