优化以下代码 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; }
时间: 2023-12-10 18:05:33 浏览: 99
用C++实现strcpy(),返回一个char*类型的深入分析
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` 函数时,将分隔符字符串改为 ",.",这样就不需要在循环中判断分隔符是 "," 还是 "." 了。
阅读全文