簡體   English   中英

C 程序檢查字符是否為小寫字母並轉換為大寫字母,反之亦然

[英]C Program to check if character is a lower case letter and convert to upper case letter and vice versa

C 程序檢查字符是否為小寫字母並轉換為大寫字母,反之亦然

為什么這行得通?

(如果我使用 if 語句兩次,但如果我使用 if-else 語句,它似乎可以工作)

#include <stdio.h>
#include <stdlib.h>

int main()
{
   char ch , k ;
   printf("enter an alphabet : ");
   scanf("%c",&ch);

   if (ch>=97 && ch<=122)
   {
     printf(" \n small letter");
     k=ch-32;
     printf(" \n after conversion %c",k);
   }

   if (ch>=65 && ch<=90)
   {
     printf(" \n capital letter");
     k=ch+32;
     printf(" \n after conversion %c",k);
   }

  return 0;
}

但這會顯示一個隨機值。

#include <stdio.h>
#include <stdlib.h>

int main()
{
char ch , k ;
printf("enter an alphabet : ");
scanf("%c",&ch);

if (ch>=97 && ch<=122)
{
  printf(" \n small letter");
  k=ch-32;
  printf(" \n after conversion %c",k);
}

else (ch>=65 && ch<=90);
{
  printf(" \n capital letter");
  k=ch+32;
  printf(" \n after conversion %c",k);
}

return 0;
}

if (ch>=97 && ch<=122)它只適用於 ASCII 碼。 它不是便攜式的。 C 具有此任務的特殊功能:

#include <ctype.h>

int swapCase(int ch)
{
    return isupper((unsigned char)ch) ? tolower((unsigned char)ch) : toupper((unsigned char)ch);
    /*
    //or
    if(isupper((unsigned char)ch))
        ch = tolower((unsigned char)ch);
    else
        ch = toupper((unsigned char)ch);
    return ch;
    */
}

和一些助手 function 和主程序來演示它是如何工作的:

char *strSwapCase(char *str)
{
    char *wrk = str;
    if(str)
    {
        while(*str) 
        {
            *str = swapCase(*str);
            str++;
        }
    }
    return wrk;
}


int main (void){
    char x[] = "asDrgdfDFGHFDSdfgf3546&&&434fdgffyhfghfdfsdgsfdDFDGdfgdf";

    printf("before: %s\n", x);
    printf("after : %s", strSwapCase(x));
}

https://godbolt.org/z/E4oe99sGd

您編寫的第二個代碼無法編譯。 如果您打算使用“else if”,則應編寫為:

else if (ch>=65 && ch<=90)

更正此行會使您的代碼編譯並按預期運行。 就目前而言,我不確定您的代碼是如何運行並為您提供“隨機值”的,但是您可能正在使用一些不尋常的編譯器,它在else之后丟棄了該語句?

暫無
暫無

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

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