在字符串中提取单词的方法
在字符串中提取一个用约定分隔符分割的单词,是编程常用的操作。scanf()函数读取数据,主要靠的就是这个手段,因为输入流是字符串,要把各种用字符表达的数据转换为所需的类型,首先要把符合条件的单词分割出来,再进行转换处理。C语言处理这个操作,实际上是用strtok()函数,这个函数C程序员必须掌握,很常用。示例如下:程序代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> int main(void) { char text[] = "I Love China !"; // 被分割的字符串,必须是可编辑的,不能储存在常量区 const char delimit[] = { ' ', '!', '\0' }; // 分割单词的字符集 char* word = NULL; // 提取到的单词的指针 char* nextWord = NULL; // 指示下次操作的入口指针,实际上是strok()在分割单词之后 // 置入的'\0'字符处,这就是源串不能是常量的原因 word = strtok_s(text, delimit, &nextWord); while (word != NULL) { puts(word); word = strtok_s(NULL, delimit, &nextWord); } _getch(); return EXIT_SUCCESS; }
运行结果: