我试图实现在C小splitStringByString()函数,这是我已经走了这么远:C拆分字符串函数在字符串的末尾返回 377而不是 0。为什么?
char* splitStringByString(char* string, char* delimiter){
int i = 0, j = 0, k = 0;
while(*(string + i) != '\0'){
j = i;
while((*(string + j) == *(delimiter + k)) && (*(string + j) != '\0')){
if(*(delimiter + k + 1) == '\0'){
// return string from here.
char result[(strlen(string) - strlen(delimiter) + 1)]; // + 1 for '\0'
i = 0;
j++;
while(*(string + j) != '\0'){
result[i] = *(string + j);
i += 1;
j++;
}
i = (int)strlen(result);
result[i - 1] = '\0';
return result;
}
k++;
j++;
}
i++;
}
return NULL;
}
所以它的工作原理或多或少; 该函数返回分隔符后的字符串,但是在该字符串的末尾(最后一个字符)总是\ 377。 我已经找到说这是一个八进制数左右的东西(stackoverflow),但对我来说不是很清楚。你能帮我,给我一些关于我做错了什么的建议吗?
非常感谢! :-)
'i =(int)strlen(result); 结果[i - 1] ='\ 0';'如果字符串长度为0会怎么样?为什么null在它的中间终止一个字符串? –
这个函数实际上做了什么?这个想法是什么? –
您正在返回一个指向堆栈上的对象的指针 - 它将被覆盖。我的编译器不会编译这个,因为结果的定义不能被分配,因为大小不是恒定的。 –