运用c语言和指针 编写一个函数将带空格的字符串分成两部分
时间: 2024-12-18 10:22:36 浏览: 4
20151910042-刘鹏-09-指针程序设计(三)1
当你需要在C语言中使用指针处理字符串并将其分成两部分时,可以编写一个函数,该函数通常会接收指向字符串的指针、字符串长度以及一个分隔符的位置作为输入参数。下面是一个简单的例子,展示了如何使用指针实现这个功能:
```c
#include <stdio.h>
#include <string.h>
void split_string(char *str, int str_len, char delimiter, char **part1, char **part2) {
// 初始化部分1和部分2为空指针
*part1 = NULL;
*part2 = NULL;
// 寻找分隔符的位置
int pos = -1; // 没找到时初始值为-1
for (int i = 0; i < str_len; i++) {
if (str[i] == delimiter) {
pos = i;
break;
}
}
// 如果找到了分隔符并且不是在字符串开头
if (pos != -1 && pos > 0) {
// 分配内存给部分1和部分2(不包含结束字符)
size_t part1_size = pos;
*part1 = (char *)malloc(part1_size + 1); // 加1为了存储'\0'
if (*part1) {
strncpy(*part1, str, part1_size);
(*part1)[part1_size] = '\0'; // 添加结束符
// 计算部分2的起始位置,并分配内存
size_t part2_size = str_len - (pos + 1);
*part2 = (char *)malloc(part2_size + 1);
if (*part2) {
strncpy(*part2 + 1, &str[pos + 1], part2_size); // 提前加1是为了跳过分隔符
(*part2)[part2_size] = '\0';
}
} else {
// 如果没有找到分隔符,或者分隔符在字符串开头,直接返回整个字符串
*part1 = strdup(str);
*part2 = NULL; // 或者如果不需要第二部分,则设置为NULL
}
}
int main() {
char str[] = "Hello, World!";
char *part1, *part2;
split_string(str, strlen(str), ',', &part1, &part2);
printf("Part 1: %s\n", part1);
printf("Part 2: %s\n", part2);
// 释放内存
free(part1);
free(part2);
return 0;
}
```
阅读全文