我试着编写一个简单的函数来获取名称并在添加扩展名后返回它。 例如,如果我有一个指向“abcd”的char指针,该函数应该返回“abcd.as”
我尝试编写这个函数来获取char指针并在添加扩展后返回指向新char的指针。但有人知道为什么不工作?
char* AddFileExtension(char* FileName)
{
char* FixFileName=NULL;
char* Extension = ".as";
strcpy(FixFileName, FileName);
strcat(FixFileName, Extension);
return FixFileName;
}
答案 0 :(得分:1)
您必须为FixFileName
分配内存:
char* Extension = ".as";
char* FixFileName = malloc(strlen(FileName) + strlen(Extension) + 1);
完成后,不要忘记free()
记忆。出于显而易见的原因,这必须在函数之外完成。
答案 1 :(得分:1)
你必须为FixFileName
分配内存,分配内存的大小应该是它的长度
FileName
+ sizeof(".as")
注意: sizeof
将计算".sa"
字符串的空字符,因此无需为字符串FixFileName
的空字符串添加1
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()
答案 2 :(得分: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;
}
试试上面的代码。一旦完成,你必须释放记忆