gets输入一个字符串,不用字符串strlen函数,自定义函数,计算字符串的长度?
可以使用以下代码定义一个函数来计算字符串的长度:
int strlen(char *str) {
int len = 0;
while (*str != '\0') {
len++;
str++;
}
return len;
}
该函数接受一个字符串(以字符指针的形式)作为参数,并返回字符串的长度。它通过不断遍历字符串,直到遇到字符串结束符('\0')为止,每次遍历都将字符串指针向后移动一位,并累加一个计数器。当字符串遍历完毕时,计数器的值就是字符串的长度。
示例:
char *str = "Hello, World!";
int len = strlen(str); // len = 13
该函数的缺点是,由于它依赖于字符串结束符,因此如果字符串中没有
添加字符串结束符,则无法计算字符串的长度。另外,如果字符串中包含多个字符串结束符,则会导致函数计算错误的长度。
为了避免这些问题,可以改进上述函数,使用另一种方法来计算字符串的长度。例如,可以接收一个字符数组作为参数,并在函数中指定数组的大小。这样,函数就可以遍历整个字符数组,并计算字符串的实际长度,而不会依赖于字符串结束符。
示例:
int strlen(char str[], int size) {
int len = 0;
for (int i = 0; i < size; i++) {
if (str[i] == '\0') {
break;
}
len++;
}
return len;
}
char str[] = "Hello, World!";
int len = strlen(str, sizeof(str)); // len = 13