某些语言(例如 Java)要求您创建另一个字符串才能解决某些类型的问题。但是对于 C 语言,什么时候应该创建另一个字符串,什么时候应该简单地修改现有字符串?
以下代码为例:
char *removeTags(char *s, int length)
{
if (!s || length < 1)
{
exit(EXIT_FAILURE);
}
char *tmp = calloc(length, sizeof(char));
int count = 0;
for (int i = 0; i < length; i++)
{
if (s[i] == '<')
{
for (int k = i; k < length; k++)
{
if (s[k] == '>')
{
i = k;
break;
}
}
}
else if (s[i] != '>' && s[i] != '<')
{
tmp[count] = s[i];
count++;
}
}
return tmp;
}
它应该被调用如下:
char *foo = (char *)calloc(length, sizeof(char)); foo = removeTags(foo, strlen(foo));
如果我只是修改 char *s
而不是创建 char *tmp
来帮助我,会更好吗?
最佳答案
如果函数处理字符串,那么第二个参数是多余的并且容易出错
char *removeTags(char *s, int length)
如果你想创建一个新的字符串,那么函数必须像这样声明
char * removeTags( const char *s );
即函数参数应具有限定符 const
。
如果您想就地更改字符串,则必须像这样声明该函数
char * removeTags( char *s );
请注意,您不得更改字符串文字。
如果您还向函数传递字符串文字,则必须像这样声明该函数
char * removeTags( const char *s );
您可以定义这两个函数,但在这种情况下您需要使用不同的函数名称。
关于c - 修改现有的 char* 或创建一个 tmp char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71728611/