繁体   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