[英]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.