C语言实现字符串截取函数left、mid和right,不使用指针
时间: 2024-12-17 12:31:37 浏览: 4
C语言编程中实现二分查找的简单入门实例
在C语言中,由于标准库并没有提供直接的left、mid和right这样的字符串截取函数,但我们可以自定义三个函数来实现这个功能。这里假设我们只讨论返回新的字符串,而不是修改原字符串。由于C语言中数组下标从0开始,所以mid函数需要额外处理边界情况。
```c
#include <stdio.h>
#include <string.h>
// 定义左截取函数
char* left(char* str, int n) {
if (n <= 0 || n > strlen(str)) {
return "Invalid input";
}
char new_str[n];
strncpy(new_str, str, n - 1); // 注意不要复制空字符'\0'
new_str[n - 1] = '\0'; // 添加结束符
return new_str;
}
// 定义中间截取函数
char* mid(char* str, int start, int length) {
if (start < 0 || start + length > strlen(str) || length <= 0) {
return "Invalid input";
}
char new_str[length];
strncpy(new_str, str + start, length - 1);
new_str[length - 1] = '\0';
return new_str;
}
// 定义右截取函数
char* right(char* str, int n) {
if (n <= 0 || n > strlen(str)) {
return "Invalid input";
}
int len = strlen(str);
char new_str[n];
strncpy(new_str, str + len - n, n);
new_str[n - 1] = '\0';
return new_str;
}
int main() {
char str[] = "Hello, World!";
printf("Left: %s\n", left(str, 5));
printf("Middle: %s\n", mid(str, 7, 5));
printf("Right: %s\n", right(str, 6));
return 0;
}
```
阅读全文