繁体   English   中英

在C中使用strcpy函数,不知道长度

[英]Using strcpy function in C, without knowing the length

我试图编写一个简单的函数来获取名称,并在添加扩展名后返回它。 例如,如果我有指向“ abcd”的字符指针,则函数应返回“ abcd.as”

我尝试编写此函数以获取char指针,并在添加扩展名后返回指向新char的指针。 但是有人不知道为什么不工作吗?

char* AddFileExtension(char* FileName)
{
    char* FixFileName=NULL;
    char* Extension = ".as";
    strcpy(FixFileName, FileName);
    strcat(FixFileName, Extension);
    return FixFileName;
}

您必须为FixFileName分配内存:

char* Extension = ".as";
char* FixFileName = malloc(strlen(FileName) + strlen(Extension) + 1);

完成后,不要忘记free()内存。 出于明显的原因,必须在功能之外进行此操作。

您必须为FixFileName分配内存,并且分配内存的大小应为FileName + sizeof(".as")的长度

注: sizeof将计算的空字符".sa"字符串,所以没有必要添加1串的空charachter FixFileName

char* AddFileExtension(char* FileName)
{
#define EXTENSION_AS ".as"    
    char* FixFileName= malloc(strlen(FileName) + sizeof(EXTENSION_AS));

    sprintf(FixFileName, "%s%s", FileName, EXTENSION_AS);
    return FixFileName;
}

当使用free()在程序中使分配的内存变得无用时,不要忘记释放已分配的内存

char* AddFileExtension(char* FileName)
{
    char* FixFileName=NULL;
    char* Extension = ".as";
    FixFileName=(char *) malloc(strlen(FileName)+strlen(Extension)+1);
    strcpy(FixFileName, FileName);
    strcat(FixFileName, Extension);
    return FixFileName;
}

试试上面的代码。 完成后必须释放内存

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM