1

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

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

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

3 回答 3

1

您必须为以下内容分配内存FixFileName

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

完成后不要忘记free()记忆。由于显而易见的原因,这必须在函数之外完成。

于 2013-03-29T08:57:10.253 回答
1

你必须分配内存,分配内存FixFileName的大小应该是 FileName+sizeof(".as")

注意:sizeof计算字符串的空字符,".sa"因此无需为字符串的空字符加 1FixFileName

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()

于 2013-03-29T09:01:59.140 回答
0
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;
}

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

于 2013-03-29T09:08:13.243 回答