3. 编写一个程序,输入一系列单词,单词之间以逗号分隔,然后 提取这些单词,并将它们分行输出,删除头尾的空格 c语言
时间: 2024-12-13 19:18:54 浏览: 11
C++单词扫描程序(编译原理词法分析)
在 C 语言中,你可以通过标准库函数 `fgets` 和字符串处理函数来实现这个功能。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <ctype.h> // 包含 isspace 函数
// 函数用于提取并打印单词
void print_words(char *input) {
int word_start = 0;
while (*input != '\0') { // 遍历输入字符串直到结束
if (!isspace(*input)) { // 如果不是空格字符
// 如果当前开始位置还没设置,或者上一个字符是空格
if (word_start == 0 || isspace(input[word_start - 1])) {
word_start = input - 1; // 更新开始位置到非空格字符
}
printf("%c", *input); // 输出当前字符
} else { // 当前字符是空格
// 打印单词(去除头尾空格)
char *word = input + word_start;
while (word > input && isspace(word[-1])) word--;
while (word < input && isspace(*word)) word++;
printf("%s\n", word); // 输出单词并换行
word_start = word + 1; // 更新开始位置到下一个单词的开头
}
input++; // 移动指针到下一个字符
}
// 处理最后一个单词
if (word_start != 0) {
char *word = input + word_start;
while (word > input && isspace(word[-1])) word--;
while (word < input && isspace(*word)) word++;
printf("%s\n", word);
}
}
int main() {
char input[1000]; // 输入字符串,大小足够容纳逗号分隔的单词序列
printf("请输入一串以逗号分隔的单词:");
fgets(input, sizeof(input), stdin); // 从标准输入读取用户输入,包括末尾的换行符
// 删除输入字符串末尾的换行符
if (input[strlen(input) - 1] == '\n') {
input[strlen(input) - 1] = '\0';
}
print_words(input);
return 0;
}
```
阅读全文