我已经编写了一个程序,该程序可以使我将数组中的每个单词反转,但我的问题是我想将单词的第一个字母大写,将所有其他字母都小写。
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
有人可以帮我吗?
您可以使用类似以下内容的东西:
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