复制字符串而不使用strcpy

时间:2019-02-28 19:56:36

标签: c string pointers dereference

#include <stdio.h>
#include <stdlib.h>

int main() {
    char *str, *temp;
    str = malloc(sizeof(char) * 100);
    fgets(str, 100, stdin);
    temp = str;
    printf("%s", str);
    return 0;
}

此有效代码是否可以在不使用strcpy()函数的情况下将一个字符串复制到另一个字符串?

1 个答案:

答案 0 :(得分:5)

您仅要将str的起始地址复制到temp。这意味着对temp的任何更改也将反映在str中,因为它们指向相同的内存。它不会真正模拟strcpy(dest, src),而是从src指向的内存位置创建由dest指向的以空结尾的字符串的单独副本

因此,按照询问回答您的问题:不。

如果您要避免strcpy的O(n)运行时间,那也是您实际上无法做到的事情。

如果编程任务或练习要求您创建功能上与strcpy等价的代码,则以下是其使用的算法的高级说明:

  1. *source中的字符复制到*destination
  2. 如果刚刚复制的字符是空终止符,请退出。
  3. 否则,将指针增加到source,然后将指针增加到destination
  4. 转到步骤1。