#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()
函数的情况下将一个字符串复制到另一个字符串?
答案 0 :(得分:5)
您仅要将str
的起始地址复制到temp
。这意味着对temp
的任何更改也将反映在str
中,因为它们指向相同的内存。它不会真正模拟strcpy(dest, src)
,而是从src
指向的内存位置创建由dest
指向的以空结尾的字符串的单独副本。
因此,按照询问回答您的问题:不。
如果您要避免strcpy
的O(n)运行时间,那也是您实际上无法做到的事情。
如果编程任务或练习要求您创建功能上与strcpy
等价的代码,则以下是其使用的算法的高级说明:
*source
中的字符复制到*destination
source
,然后将指针增加到destination
。