c语言将多个单词从字符串中提取出来并保存
时间: 2024-05-11 11:17:50 浏览: 10
在C语言中,可以使用`strtok()`函数将一个字符串分解成多个子串。以下是一个简单的示例代码,演示如何将一个字符串中的多个单词提取出来并保存到一个数组中:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello world, how are you?";
char words[10][20]; // 保存单词的数组,最多10个单词,每个单词最长20个字符
int i = 0;
// 使用 strtok() 函数分解字符串
char* token = strtok(str, " ");
while (token != NULL && i < 10) {
strcpy(words[i], token);
token = strtok(NULL, " ");
i++;
}
// 输出保存的单词
for (int j = 0; j < i; j++) {
printf("%s\n", words[j]);
}
return 0;
}
```
这个示例代码将一个包含多个单词的字符串分解成多个子串,每个子串代表一个单词,并将这些单词保存到一个数组中。在分解字符串时,使用空格作为分隔符。这个程序最终输出保存的单词,其中每个单词都独占一行。注意,这个程序只是一个简单的示例,实际应用中可能需要根据具体需求进行修改。
相关问题
c语言将多个单词从字符串中提取出来并保存不用strtok
可以使用循环和指针的方法来实现:
```c
#include <stdio.h>
void extract_words(const char* str) {
const char* start = str; // 指向当前单词的开头
const char* end; // 指向当前单词的结尾
while (*start != '\0') { // 循环直到字符串结尾
while (*start == ' ') {
start++; // 跳过空格
}
end = start;
while (*end != ' ' && *end != '\0') {
end++; // 找到单词结尾
}
if (start != end) { // 如果单词不为空
char word[end - start + 1]; // 保存单词的数组
for (int i = 0; i < end - start; i++) {
word[i] = *(start + i); // 拷贝单词到数组中
}
word[end - start] = '\0'; // 末尾添加字符串结束符
printf("%s\n", word); // 输出单词
}
start = end; // 指向下一个单词的开头
}
}
int main() {
char str[] = "C语言 是 一种 通用 的 高级 语言";
extract_words(str);
return 0;
}
```
输出结果:
```
C语言
是
一种
通用
的
高级
语言
```
c语言将多个单词从字符串中提取出来并保存最基本的方法
在C语言中,可以使用字符串函数和指针操作来提取单词。一个基本的方法是使用strtok函数分割字符串,并使用指针数组来保存分割出的单词。以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "This is a string";
char *tokens[10]; // 指针数组,用于保存分割出的单词
char *delimiter = " "; // 分割符,这里使用空格
// 使用strtok函数分割字符串
char *token = strtok(str, delimiter);
int i = 0;
while (token != NULL) {
tokens[i] = token; // 保存分割出的单词到指针数组中
i++;
token = strtok(NULL, delimiter);
}
// 输出分割出的单词
for (int j = 0; j < i; j++) {
printf("%s\n", tokens[j]);
}
return 0;
}
```
输出结果为:
```
This
is
a
string
```
上述代码中,使用strtok函数分割字符串,将分割出的单词保存到指针数组tokens中,最后输出分割出的单词。需要注意的是,strtok函数会修改原字符串,因此在使用之前需要将原字符串复制一份。此外,上述代码还没有考虑字符串中存在连续空格的情况,需要在实际使用中进行处理。