簡體   English   中英

復制字符串而不使用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) ,后者會從dest指向的內存位置開始創建src指向的以null終止的字符串的單獨副本

因此,按要求回答您的問題:不。

如果您要避免strcpy的O(n)運行時間,那也是您實際上無法做到的事情。

如果需要進行編程作業或練習來創建功能上與strcpy等效的代碼,以下是對其使用的算法的高級描述:

  1. *source的字符復制到*destination
  2. 如果剛剛復制的字符是空終止符,請退出。
  3. 否則,將指針增加到source ,並將指針增加到destination
  4. 轉到步驟1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM