c语言用空格拆分字符串,不使用strtok函数
时间: 2024-10-26 08:16:11 浏览: 21
C语言切割多层字符串(strtok_r strtok使用方法)
在C语言中,如果你想用空格拆分字符串但不使用`strtok()`函数,你可以手动遍历字符串,逐个检查字符并存储到新的数组中。以下是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
void split_string(char *input, char *result[], int max_count) {
int count = 0;
char temp[100]; // 存储分割后的单词临时空间
char* word_start = input;
while (*input != '\0') {
if (*input == ' ') { // 如果遇到空格
strncpy(temp, word_start, count); // 将词复制到临时数组
temp[count] = '\0'; // 结束字符串
result[count++] = temp; // 将单词添加到结果数组
word_start++; // 移动指针到下一个字节
} else {
word_start++; // 非空格字符直接跳过
}
input++;
}
// 处理最后一个单词
strncpy(temp, word_start, count);
temp[count] = '\0';
result[count++] = temp;
// 装填剩余元素为NULL,表示结束
for (int i = count; i < max_count; i++) {
result[i] = NULL;
}
}
int main() {
char str[] = "Hello World! This is a test.";
char *result[5];
int count = sizeof(result) / sizeof(result[0]);
split_string(str, result, count);
for (int i = 0; result[i] != NULL; i++) {
printf("%s\n", result[i]);
}
return 0;
}
```
在这个例子中,我们创建了一个`split_string`函数,它接受一个输入字符串、一个结果数组以及最大计数。然后,它会遍历输入字符串,每遇到一个空格就将单词复制到结果数组中。
请注意,这个实现假设输入字符串中不会有连续的多个空格。如果需要处理这种情况,可以稍作修改,例如合并相邻的空格。
阅读全文