簡體   English   中英

用C編寫的程序未提供正確的輸出

[英]This program written in C is not giving proper output

這是一個將字符串的字母轉換為大寫或小寫字母的程序。我不知道這段代碼有什么問題。運行它時,它會忽略字符串的第一個字母。就像我給字符串“ 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM