程序D19.c的功能是将inBuf中字符串拆分成一个个的单词。
程序说明:
(1)单词之间的分隔符由串divChar,程序中定义为“;?!,.>/\”。
(2)函数getStrFromBuf的功能是从Buf的开始处寻找第一个单词,将找到的单词作为一个字符串复制到Str处,divStr指明单词间的分隔符。GetStrFromBuf的返回值指向已找到单词的下一个字符。
(3)函数charInStr的功能是判断字符t是否出现在串Str中。
(4)主程序的功能是将inBuf中的所有单词在屏幕上显示出来。
#include<stdio.h>
#define Yes 1
#define No 0
char *getStrFromBuf(char *Buf, char *Str, char *divStr);
int charInStr(char *Str, char t);
int main(void)
{
char inBuf[100] = ">how old are/ you?", *point, oneWord[20];
char divChar[] = " ;?!,.>/\\";
point = inBuf;
while (*point)
{
/*********Found************/
getStrFromBuf(point, oneWord, divChar);
if (*oneWord)
{
puts(oneWord);
}
}
return 0;
}
int charInStr(char *Str, char t)
{
for (; *Str; Str++)
{
/*********Found************/
if (*Str == *t)
{
/*********Found************/
return No;
}
}
/*********Found************/
return Yes;
}
char *getStrFromBuf(char *Buf, char *Str, char *divStr)
{
for (; *Buf; Buf++)
{
if (charInStr(divStr, *Buf) == No)
{
break;
}
}
for (; *Buf; Buf++)
{
if (charInStr(divStr, *Buf) == Yes)
{
break;
}
/*********Found************/
Str = *Buf;
Str++;
}
/*********Found************/
*Str = '0';
/*********Found************/
return ;
}