簡體   English   中英

我需要一種只接受大寫字母的方法

[英]I need a way to accept UPPERCASE letters only

我需要一種只接受大寫字母的方法,並且我想使用 ELSE 來打印錯誤(或相反),因為它可以享受運行長度編碼的樂趣,但它似乎不起作用。

每次我輸入一個字符時,比如 A 或 B - 它都會吐出錯誤。

這不是代碼真正的樣子,重要的是 IF 和 ELSE 語句。

#include <stdio.h>

int main()
{
    char current, previous = 0;
    int AoR = 0, unc_am, am, first = 0;

    while(scanf("%c", &current) != EOF)
    {
        if(current <= 'Z' && current >= 'A')
        {RLE}
        else
        {printf error}
    }
}

我做錯了什么? 謝謝。

改變:

scanf("%c", &current);

至:

scanf(" %c", &current)

正如@kiranBiradar 評論的那樣。 我在使用 scanf 讀取 char 時在 Caution中總結了原因。

PS:您可以使用isupper()來檢查字符是否為大寫,正如@gerhardh 評論的那樣。

如前所述,您可以使用 isupper 來檢查字符是否為大寫,也可以使用 fgets 讀取整行。 但是 isupper 不會關心字符是空格還是換行符,因此您可以將 isupper 與 isalpha 結合使用。


#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
    char input[32] = {0};

    fgets(input,sizeof(input),stdin);
    unsigned long length = strlen(input);
    for(unsigned long index = 0; index < length; ++index){
        if(!isupper(input[index]) && isalpha(input[index])){
            printf("ERROR: The character %c is lowercase\n",input[index]);
        }
    }
    return 0;
}

您必須檢查並跳過行終止符。 他們也是人物……

#include <stdio.h>

int main(void) {
  char c;
  while (scanf ("%c", &c) == 1)
    {
      printf("0x%02X ", c);
      if (c == '\n')
        printf("\n");
    }
  return 0;
}

跑步:

ABC
0x41 0x42 0x43 0x0A
DefG
0x44 0x65 0x66 0x47 0x0A
H
0x48 0x0A
i
0x69 0x0A

暫無
暫無

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

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