编辑代码

#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 );
    }