int len = 0; while (*a != '\0') { len++; a++; } return len; }
时间: 2024-01-23 17:02:14 浏览: 28
这是一个用指针遍历字符串的函数,它的作用是求字符串的长度。
```c++
int fun(char a[]) {
int len = 0;
while (*a != '\0') { // 当指针指向的字符不是字符串结束标志 '\0' 时
len++; // 字符串长度加 1
a++; // 指针指向下一个字符
}
return len;
}
```
函数中的指针 a 随着遍历不断指向字符串中的下一个字符,当它指向 '\0' 时,表示字符串遍历结束,此时函数返回字符串长度 len。
相关问题
优化以下代码 char* p = str; int numCount = 0; while (*p != '\0') { if (*p == ',' || *p == '.') { numCount++; } p++; } numCount++; // 数字个数等于分隔符个数加1 *len = numCount; int* nums = (int*)malloc(sizeof(int) * numCount); char *x = strtok(str,",."); int i = 0; while (x!= NULL) { nums[i++] = atoi(x); x = strtok(NULL, ",."); } return nums; }
char* p = str;
int numCount = 1; // 初始化为1,因为最后一个数字后面没有分隔符
while (*p != '\0') {
if (*p == ',' || *p == '.') {
numCount++;
}
p++;
}
*len = numCount;
int* nums = (int*)malloc(sizeof(int) * numCount);
char *x = strtok(str, ",.");
int i = 0;
while (x != NULL) {
nums[i++] = atoi(x);
x = strtok(NULL, ",.");
}
return nums;
```
主要的优化有两点:
1. 在计算数字个数时,初始化为1,因为最后一个数字后面没有分隔符。
2. 在使用 `strtok` 函数时,将分隔符字符串改为 ",.",这样就不需要在循环中判断分隔符是 "," 还是 "." 了。
int len(char *sp) { int len = 0; while (*sp) { //遍历字符串,当未到结束符'\0'时,累加长度 if (*sp != ' ') { len++; } sp++; //指针后移 } return len; }
这是一个C语言函数,用于计算字符串的长度(不包括空格字符)。函数接受一个指向字符串的指针作为参数,然后遍历该字符串并累加非空格字符的个数,最终返回字符串的长度。
下面是该函数的详细解释:
```c
int len(char *sp) {
int len = 0; // 初始化长度为0
while (*sp) { // 遍历字符串,当未到结束符'\0'时,累加长度
if (*sp != ' ') { // 如果当前字符不是空格,则累加长度
len++;
}
sp++; // 指针后移
}
return len; // 返回字符串长度
}
```
该函数使用了一个while循环,当指针指向的字符不是结束符'\0'时,就继续循环。在每次循环中,判断指针指向的字符是否为空格,如果不是,则将长度加1。最后,返回字符串的长度。