无法使用指针将小写字母转换为大写字母
Can't convert lowercase to uppercase with pointer
所以我想用一个条件把小写字母变成大写字母,小写字母前必须有space,但问题是我做不到
检查数组中的下一个字符(使用 +1)是否为 space。
#include <stdio.h>
#include <ctype.h>
void convertToUpper( char *array );
int main()
{
char x[] = "i believe i can do it";
convertToUpper(x);
printf("%s",x);
return 0;
}
void convertToUpper( char *array )
{
while( *array != '[=10=]' )
{
if( *( array + 1 ) != ' ' && *array == ' ' )
{
*( ++array) = toupper( *(array) );
}
++array;
}
}
你只是把字符转换错了,因为在你的条件下,*array
是space,你应该转换它后面的字母:
while(*array != '[=10=]')
{
if( *(array + 1) != ' ' && *array == ' ')
*(array + 1) = toupper(*(array + 1));
++array;
}
这个简单的检查不适用于第一个字符,如果它也应该是大写,在循环之前添加以下内容:
if (*array != ' ')
*array = toupper(*array)
void convertToUpper( char *array )
{
while ( array[0] != 0) && (array[1] != 0) )
{
if( (array[1] != ' ') && (array[0] == ' ' )
array[1] = toupper( array[1] );
++array;
}
}
这种方式记住前一个字符
char previous = ' ';
while(*array != '[=10=]') {
if(previous == ' ') {
*array = toupper(*array);
}
previous = *array++;
}
刚刚接受了一个答案,但我 post 无论如何。
所以我想用一个条件把小写字母变成大写字母,小写字母前必须有space,但问题是我做不到 检查数组中的下一个字符(使用 +1)是否为 space。
#include <stdio.h>
#include <ctype.h>
void convertToUpper( char *array );
int main()
{
char x[] = "i believe i can do it";
convertToUpper(x);
printf("%s",x);
return 0;
}
void convertToUpper( char *array )
{
while( *array != '[=10=]' )
{
if( *( array + 1 ) != ' ' && *array == ' ' )
{
*( ++array) = toupper( *(array) );
}
++array;
}
}
你只是把字符转换错了,因为在你的条件下,*array
是space,你应该转换它后面的字母:
while(*array != '[=10=]')
{
if( *(array + 1) != ' ' && *array == ' ')
*(array + 1) = toupper(*(array + 1));
++array;
}
这个简单的检查不适用于第一个字符,如果它也应该是大写,在循环之前添加以下内容:
if (*array != ' ')
*array = toupper(*array)
void convertToUpper( char *array )
{
while ( array[0] != 0) && (array[1] != 0) )
{
if( (array[1] != ' ') && (array[0] == ' ' )
array[1] = toupper( array[1] );
++array;
}
}
这种方式记住前一个字符
char previous = ' ';
while(*array != '[=10=]') {
if(previous == ' ') {
*array = toupper(*array);
}
previous = *array++;
}
刚刚接受了一个答案,但我 post 无论如何。