簡體   English   中英

將字符串復制到C中的字符指針

[英]Copy character string to character pointer in C

這是一個演示我的問題的簡單程序。 我有一個函數functionB ,它將指向字符數組的指針傳遞給functionA functionA查找值並將其存儲到字符數組。 字符數組的內容應復制到字符指針fdate 我該如何實現?

int functionB() {
    char fdate[20];
    functionA(&fdate[0]);
    return 0;
}

int functionA(char *fdate) {
    char date[20] = "20 May 2016";
    strcpy(fdate, date);
    return 0;
}

您不能將字符串復制到字符指針中,但是可以將字符串復制到字符指針指向的存儲塊中。 你不可以做這個:

char *ptr;
functionA(ptr);

並期望ptr指向字符串。 您需要將指向有效內存塊的指針傳遞給函數,如下所示:

char buf[100];
functionA(buf);

現在,該副本可以工作了,但是該函數將是不安全的,因為它不知道有多少內存可用於寫入其字符串,並且可能導致緩沖區溢出。 更好的方法是將緩沖區的大小與緩沖區一起傳遞:

functionA(buf, sizeof(buf));

另一種選擇是將指針傳遞給指針,並讓函數動態分配字符串。 但是,在這種情況下,調用方負責在使用內存后釋放內存:

char *ptr;
functionA(&ptr);
...
free(ptr);
...
int functionA(char **fdate) {
    char date[20] = "20 May 2016";
    *fdate = malloc(sizeof(date));
    memcpy(*fdate, date);
    return 0;
}

暫無
暫無

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

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