c语言不使用strtok将指针字符串adb acd按空格拆分,将adb给指针a,acd给指针b
时间: 2024-10-25 16:10:40 浏览: 24
C语言切割多层字符串(strtok_r strtok使用方法)
5星 · 资源好评率100%
在C语言中,如果没有`strtok`函数,我们可以手动编写一个简单的循环来按空格拆分字符串。首先,你需要两个指向字符数组的指针,`a`用于存储"adb",`b`用于存储"acd"。以下是一个示例:
```c
#include <stdio.h>
#include <string.h>
void split_string(char* str, char** pointers, int num_pointers) {
char temp[100]; // 存储临时分割后的部分
int i = 0;
while (str != NULL && *str != '\0') { // 遍历字符串直到遇到'\0'
if (*str == ' ') { // 如果找到空格
temp[i] = '\0'; // 将之前的部分结束
pointers[i] = temp; // 将结果分配给指针数组
strcpy(pointers[i + 1], str); // 将剩余的字符串复制到下一个位置
str = pointers[i + 1]; // 更新指针指向剩余部分
i++; // 移动到下一个指针位置
} else {
temp[i++] = *str; // 否则直接复制字符
}
str++;
}
// 处理最后一个部分
temp[i] = '\0';
pointers[i] = temp;
}
int main() {
char str[] = "adb acd";
char* a = malloc(strlen("adb") + 1); // 分配空间给a
char* b = malloc(strlen("acd") + 1); // 分配空间给b
split_string(str, &a, 2); // 指向a的位置传入地址
split_string(NULL, &b, 2); // 指向b的位置传入地址,并用NULL结束字符串处理
printf("a: %s\n", a);
printf("b: %s\n", b);
free(a);
free(b);
return 0;
}
```
在这个示例中,`split_string`函数会遍历输入字符串,每遇到一个空格就将其前一个部分存入`temp`数组并更新对应的指针。注意最后还需要释放动态分配的空间。
阅读全文