我一直是 C# 开发人员。
但现在我必须编写 C 代码。
我曾经使用 String.IsNullOrEmpty()
来防止错误并分配一个新字符串。
我希望编写 C 代码来表现得像 String.IsNullOrEmpty。并分配一个新字符串
所以我写了一些示例代码。
static char *pCtvUrl;
void set_app_url(const char* appUrl){
if(!appUrl || !*appUrl)
return;
pCtvUrl = malloc(sizeof(appUrl));
strcpy(pCtvUrl,appUrl);
}
我想检查这是否正确。
如果你知道更好的解决方法,请给我一些建议。
谢谢
最佳答案
您对 NULL 或空字符串的检查是正确的
改变:
pCtvUrl = malloc(sizeof(appUrl)); /* This would allocate sizeof(char*) only. */
到:
pCtvUrl = malloc(sizeof(char) * (strlen(appUrl) + 1)); /* '+1' is for null terminator.*/
在重新分配之前,您还需要free()
pCtvUrl
内存:
static char *pCtvUrl = 0;
在 pCtvUrl = malloc(...);
调用 free(pCtvUrl);
之前。
考虑更改 set_app_url()
以返回字符串的副本,而不是使用全局变量:
char* set_app_url(const char* appUrl)
{
char* retVal = 0;
if (appUrl && *appUrl)
{
retVal = malloc(strlen(appUrl) + 1);
strcpy(retVal,appUrl);
}
return retVal;
}
调用者负责释放返回的字符串。
关于c# - 如何在 C# 中编写类似于 String.isNullOrEmpty 的 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756218/