在Dietel的"C:How to Program"一书中,这个例子出了什么问题?

MMM*_*MMM -1 c string pointers uppercase

我正在学习C:如何通过迪特尔进行编程.在Pointers一章中,有这个示例代码:

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

void convertToUppercase(char *sPtr);

int main( void )
{
    char string[] = "cHaRaCters and $32.98";
    printf( "The string before conversion is: %s", string );
    convertToUppercase( string );
    printf( "\nThe string after conversion is: %s\n", string );
}

void convertToUppercase(char *sPtr)
{
    while(*sPtr != '\0') {
        *sPtr = toupper(*sPtr);
        ++*sPtr;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时,没有问题.但是当我运行它时,没有任何反应.我找不出有什么问题!

Ôre*_*rel 6

你需要增加指针而不是值更改++*sPtr++sPtr

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

void convertToUppercase(char *sPtr);

int main( void )
{
    char string[] = "cHaRaCters and $32.98";
    printf( "The string before conversion is: %s", string );
    convertToUppercase( string );
    printf( "\nThe string after conversion is: %s\n", string );
}

void convertToUppercase(char *sPtr)
{
    while(*sPtr != '\0') {
        *sPtr = toupper(*sPtr);
        ++sPtr;
    }
}
Run Code Online (Sandbox Code Playgroud)