#include <ctype.h>//后面要用到的toupper(小写转大写)tolower(大写转小写)函数需要这个头文件
#include <string.h>
#include <stdio.h>
void upfst ( char * p )
{
int k=0;//因为字符串p里面可能有多个单词,单词之间还有空格,k是用来在遍历字符串时,
//表示当前是在一个单词内,还是碰到了空格
for ( ; *p; p++ )//C语言规定逻辑假用0来表示,所以*p等价于*p!='\0'
if ( k )//C语言规定逻辑真用非0值表示,所以if(k)等价于if(k!=0)
{
if ( *p == ' ' ) k = 0;
}//这句是当当前字符从字母变成空格时,表示离开了一个单词,将k改为0
else if ( *p != ' ' )
{
k = 1;
*p = toupper( *p );
}//toupper是将小写字母变成大写。这句是当k==0且当前字符不是空格时,
//表示从空格进入了一个单词,将k改为1,并将当前字符改为大写字母
}//这里是整个upfst函数结束的括号
main( )
{ char chrstr[81];
printf( "\nPlease enter an English text line: " );
gets( chrstr );//输入字符串
printf( "\n\nBefore changing:\n %s", chrstr );
upfst( chrstr );//调用函数
printf( "\nAfter changing:\n %s\n", chrstr );
}