我如何获得Word的第一个元素,并将其转换为大写字母,并将所有其他元素转换为小写字母?

问题描述 投票:0回答:1

我已经编写了一个程序,该程序可以使我将数组中的每个单词反转,但我的问题是我想将单词的第一个字母大写,将所有其他字母都小写。

C

#include <stdio.h>
#include<stdlib.h>
#include<ctype.h>

char * reversePrint( char *name )
{
    char *input_string = name;
    char temp;

    while (*input_string)
    {
        char *t = input_string;
        /* End of non Whitespace sequence */
        while (*t && *t == (unsigned char)*t && !isspace(*t))
        {
            t++;
        }
        if (t - input_string > 1)
        {
             /* Non whitespace Sequence  >1*/
            char *e = t;

            /* Reverse Words */
            do
            {
char temp = *input_string;

                *input_string++ = *--e;
                *e = temp;
            } 
        while (input_string < e);

//Paste reversed Sequence
            input_string = t;
        }
        else
        {
            //Non whitepace skip
            input_string++;
        }
    }

    return name;
}

int main( void ) 
{
    char s[] = "I love Pizza";

    printf("%s", reversePrint(s));

    return 0;
}

所以我的问题是我得到了Evol azziP,但我必须得到我Evol Azzip

有人可以帮我吗?

c arrays char reverse c-strings
1个回答
1
投票

您可以使用类似以下内容的东西:

  • 将单词的所有首字母大写。
  • 使所有其他字母都变为小写
    void make_upper(char* line)
    {
        bool first = true;
        while(*line)
        {
            if(*line != ' ' && !first)
            {
                *line = tolower(*line);
            }

            if(*line != ' ' && first)
            {
                *line = toupper(*line);
                first = false;
            }

            if(*line == ' ')
                first = true;
            line++;        
        }    
    }

其中产生:Nomis Tbeil!azzip

LIVE DEMO

© www.soinside.com 2019 - 2024. All rights reserved.