这是一个将字符串的字母转换为大写或小写的程序。我不知道这段代码有什么问题。运行它时,它会忽略字符串的第一个字母。就像我给字符串“ Lets go out”,输出为
转换为大写字母时,“ ETS GO OUT”(“ L”被排除,这是不应该发生的),转换为小写字母时,“ TS out”((“ le”被排除,这是不应该发生的)。我使用代码块。请有人帮助我:'(

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

int main()
{
    char str[80],*p;

    printf("Enter A String\n");

    gets(str);

    p=str;

    while(*p)
        *p++=toupper(*p);

    printf("After uppercase conversion: %s\n",str);

    p=str;

    while(*p)
        *p++=tolower(*p);

    printf("After lowercase conversion: %s\n",str);


    return 0;
}

最佳答案

您的while循环等效于以下代码:

while (*p)
{
    *p = tolower( *(p+1) );
    p = p+1;
}


因此,要解决此问题,您可以使用例如for循环,如下所示:

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

int main()
{
    char str[80],*p;

    printf("Enter A String\n");

    gets(str);

    for (p = str; *p != '\0'; p++)
        *p = toupper(*p);

    printf("After uppercase conversion: %s\n",str);

    for (p = str; *p != '\0'; p++)
        *p = tolower(*p);

    printf("After lowercase conversion: %s\n",str);


    return 0;
}

关于c - 用C编写的程序未提供正确的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46774141/

10-10 08:28