微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不分配内存的情况下复制字符串 - C

如何解决如何在不分配内存的情况下复制字符串 - C

我刚开始使用 C,这是一个初学者问题。但是有没有办法在不事先分配内存的情况下复制字符串? 我想用相同的结构 (char *strcpy(char *src,char *dest);) 重现 C 中内置的 strcopy 函数。我让它在函数本身中声明字符指针然后返回它。如果我事先分配内存,它也可以与原始结构作为 strcpy 一起使用。

#include <stdlib.h>

char *strcopy(char *src,char *dest)
{
    int i = 0;
    while (src[i] != '\0')
    {
        dest[i] = src[i];
        i++;
    }
    dest[i] = '\0';
    return (dest);
}

int str_size(char *str)
{
    int i = 0;
    while (str[i] != '\0')
        i++;
    return (i);
}

int main(int argc,char **argv)
{
    char *src = argv[1];
    char *dest = (char*)malloc(str_size(src));
    dest = strcopy(src,dest);
    return (0);
}

那么是否有可能在不事先分配内存且不更改我的函数头的情况下复制字符串?

解决方法

如果要避免动态分配,请使用静态分配:

#include <stdlib.h>
#include <string.h>

#define BUFFER_SIZE        1024

char *strcopy(char *src,char *dest)
{
    int i = 0;
    while (src[i] != '\0')
    {
        dest[i] = src[i];
        i++;
    }
    dest[i] = '\0';
    return (dest);
}

int str_size(char *str)
{
    int i = 0;
    while (str[i] != '\0')
        i++;
    return (i);
}

int main(int argc,char **argv)
{
    char *src = argv[1];
    char dest[BUFFER_SIZE];
    
    if(strlen(src) >= BUFFER_SIZE){
        return -1;
    }
    else{
        dest = strcopy(src,dest);
    }

    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。