c语言不使用strtok,将指针字符串char * cmd 中的内容“adb acd”按空格拆分成两个元素,adb和acd
时间: 2024-10-26 20:02:47 浏览: 18
在C语言中,如果不想使用`strtok()`函数来拆分字符串,你可以通过手动遍历字符数组的方式来实现。首先,你需要一个临时变量作为当前处理的位置,并逐个检查每个字符。当遇到空格时,就认为找到了一个字段的结束,然后复制到新的缓冲区中,直到遇到下一个空格或者字符串结束。
以下是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
void splitString(char* cmd, char** tokens, int* count) {
char* current = cmd;
*count = 0; // 初始化计数器
while (*current != '\0') { // 遍历整个字符串
if (*current == ' ') { // 如果找到空格
*tokens = (char*) realloc(*tokens, sizeof(char) * (*count + 1)); // 动态分配内存
*(*tokens + *count) = '\0'; // 在新位置添加'\0'
++(*count); // 增加计数
current++; // 移动到下一个字符
} else {
current++; // 如果不是空格,直接移动到下一个字符
}
}
// 最后一个单词不需要添加'\0',因为已经是字符串结尾
*tokens = (char*) realloc(*tokens, sizeof(char) * (*count)); // 调整大小并结束最后一个词
}
int main() {
char cmd[] = "adb acd";
char* tokens[2]; // 存储两个token
int count = 0;
splitString(cmd, tokens, &count);
printf("Token 1: %s\n", tokens[0]);
printf("Token 2: %s\n", tokens[1]);
free(tokens[0]); // 释放第一个token的内存
free(tokens[1]); // 释放第二个token的内存
return 0;
}
```
运行这个程序会输出:
```
Token 1: adb
Token 2: acd
```
阅读全文