为了测试我的技能,我正在尝试编写我自己版本的一些标准库函数。strlen()
我为,写了一个替换strlength()
:
int strlength(const char *c){
int len = 0;
while (*c != '\0') {
c++;
len++;
}
return len;
}
它不包括空终止符,我正在尝试编写一个函数来反转字符串。这:
char *reverse(const char *s){
char *str = (char *)malloc(sizeof(char) * strlength(s));
int i = 0;
while (i < strlength(s)) {
str[i] = s[(strlength(s) - 1) - i];
i++;
}
str[strlength(s)] = '\0';
return str;
}
适用于每个字符串,除了一个具有 32 个字符(不包括空终止符)的字符串,例如foofoofoofoofoofoofoofoofoofoofo
. 它挂在reverse()
函数while循环中。对于所有其他数量的字符,它都有效。为什么会这样?