c语言用空格拆分字符串adb ac,将其赋值给数组,不用strtok函数
时间: 2024-10-26 07:16:38 浏览: 7
在C语言中,如果你想要使用空格拆分字符串并将其赋值给数组,而不用`strtok`函数,你可以手动遍历字符串,并在遇到空格时将当前位置作为分隔符。以下是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
void split_string(char* str, char** arr, int max_size) {
int i = 0;
*arr = (char*)malloc(sizeof(char)*max_size); // 预先分配内存
while (*str && i < max_size - 1) { // 当字符串结束或已达到最大容量
if (*str == ' ') {
*arr[i] = '\0'; // 在遇到空格时停止当前词并添加终止符
i++;
arr[i] = NULL; // 每个元素结尾加NULL
} else {
*arr[i++] = *str; // 否则直接复制字符
}
str++; // 移动到下一个字符
}
// 如果最后一个单词没有遇到空格,需要单独处理
if (*str != '\0') {
*arr[i] = '\0';
}
// 如果有剩余空间,打印数组
for (int j = 0; j <= i; j++) {
printf("%s ", arr[j]);
}
free(arr); // 释放动态分配的内存
}
int main() {
char str[] = "adb ac";
char* tokens[5]; // 假设最多5个元素
int size = sizeof(tokens) / sizeof(tokens[0]);
split_string(str, tokens, size);
return 0;
}
```
在这个例子中,我们创建了一个名为`split_string`的函数,它接收原始字符串、指向存储结果的指针数组以及最大容量。程序会遍历字符串,直到找到所有由空格分隔的单词,然后将它们放入数组。
运行这个程序,你会看到输出类似于"adb ac"。注意,在实际应用中,你应该检查输入字符串的有效性和最大数组大小,以防溢出或其他错误。
阅读全文