【发布时间】:2023-03-17 17:20:01
【问题描述】:
再问一次, 我要求用小绳子做大绳子。 在我需要添加'@'的每个小字符串之间 在每个小字符串中的每个单词之间,我需要添加“#” 新字符串的开头和结尾没有任何空格
我有两个问题
- 我应该如何在“main”中定义大字符串以避免不必要的空格,并且不会通过插入 NULL 使 strlen 失败
- 定义 newLenght 的正确方法是什么?因为我不断收到负数。
void add(char** addTo, char* str,int on)
{
//on ==1 for nun last string to add
if (str != NULL) {
while (str != NULL)
{
char* temp = strtok(str, " \n\0");
if (temp != NULL)
{
int newlength = (strlen(*addTo) + strlen(temp) + 3) * sizeof(char);
*addTo = (char*)realloc(*addTo, newlength);
strcat(*addTo, temp);
if (str != NULL)
strcat(*addTo, "#");
}
}
if(on)
strcat(*addTo, "@");
else
*addTo = (char*)realloc(*addTo, strlen(*addTo)-1);
}
}
【问题讨论】:
-
不相关:对我来说
NULL是一个指针......如果我在谈论零字符串终止符,我更喜欢明确使用'\0'以避免混淆(对于其他人和我自己)。 -
NULL是 not 一个空字符串,它甚至不是一个字符串。""是
标签: c string char realloc strlen