优化这段代码#include <stdio.h> #include <string.h> void print_substring(char* string, int start, int end) { int length = strlen (string); if (start >= length || end > length || start >= end) { printf("Invalid substring.\n"); return; } for (int i = start; i < end; i++) { printf("%c", string[i]); } printf("\n"); }
时间: 2024-01-18 18:02:42 浏览: 56
这段代码的效率已经很高了,但是有一些小的优化可以进行:
1. 将 strlen(string) 的结果存储在变量中,避免每次调用函数都计算一次字符串长度。
2. 将字符串指针声明为 const char*,因为该函数不会修改字符串内容。
3. 将循环中的 printf("%c", string[i]) 替换为 putchar(string[i]),因为 putchar 函数比 printf 函数更快。
4. 在循环中使用指针访问字符串,而不是使用下标,因为指针访问字符串的效率更高。
优化后的代码如下:
```c
#include <stdio.h>
#include <string.h>
void print_substring(const char* string, int start, int end) {
int length = strlen(string);
if (start >= length || end > length || start >= end) {
printf("Invalid substring.\n");
return;
}
const char* p = string + start;
const char* end_ptr = string + end;
while (p < end_ptr) {
putchar(*p++);
}
putchar('\n');
}
```
注意,这些优化可能只会稍微提高一点性能,但是在大规模数据处理时,这些微小的优化也能带来很大的收益。
阅读全文