可以通过以下步骤实现:
fgets()
或scanf()
,从标准输入中获取句子并存储到字符数组中。wordCount
并初始化为0,用于记录当前已提取的单词数量。currentWord
并指向字符数组的起始位置。\0
。\0
,表示当前单词的结束。currentWord
指针指向当前位置,表示当前单词的开始。wordCount
加1,表示已提取一个单词。wordCount
是否达到2,如果是,则跳出循环。currentWord
指针指向第一个单词的起始位置,第二个单词的起始位置即为currentWord
指针后面的位置。printf()
或puts()
,输出提取到的前两个单词。以下是一个示例代码:
#include <stdio.h>
int main() {
char sentence[100];
printf("请输入一个句子:");
fgets(sentence, sizeof(sentence), stdin);
int wordCount = 0;
char* currentWord = sentence;
for (int i = 0; sentence[i] != '\0'; i++) {
if (sentence[i] == ' ' || sentence[i] == '\t') {
sentence[i] = '\0';
}
else if ((i == 0 || sentence[i - 1] == ' ' || sentence[i - 1] == '\t') && (sentence[i] >= 'a' && sentence[i] <= 'z' || sentence[i] >= 'A' && sentence[i] <= 'Z' || sentence[i] >= '0' && sentence[i] <= '9')) {
currentWord = &sentence[i];
wordCount++;
}
if (wordCount == 2) {
break;
}
}
printf("前两个单词为:%s %s\n", currentWord, currentWord + strlen(currentWord) + 1);
return 0;
}
这段代码通过遍历输入的句子,将空格或制表符替换为空字符来分割单词,并使用currentWord
指针记录每个单词的起始位置。当提取到两个单词后,循环结束并输出这两个单词。请注意,这段代码假设输入的句子不超过100个字符,并且单词之间只有一个空格或制表符的分隔。如果输入的句子超过了数组的大小或者单词之间有多个空格或制表符的分隔,可能会导致提取结果不准确。
领取专属 10元无门槛券
手把手带您无忧上云