不使用 strcpy 复制字符串

Copy string without strcpy

#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() 函数的情况下将一个字符串复制到另一个字符串的有效代码吗?

您只是将 str 的起始地址复制到 temp。这意味着对 temp 的任何更改也将反映在 str 中,因为它们指向相同的内存。它并没有真正模拟 strcpy(dest, src),后者创建了 src 指向的空终止字符串的 单独副本 ,从 [=] 指向的内存位置开始16=].

所以,回答你的问题:没有。

如果你的意图是避免 strcpy 的 O(n) 运行 时间,那也是你不能真正做到的事情。

如果编程作业或练习要求您创建功能等同于 strcpy 的代码,这里是其使用的算法的高级描述:

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