2014-09-16 1 views
-3

Я пытаюсь написать программу, которая позволит пользователю ввести столько символов , сколько захочет. Затем программа проверяет, имеют ли символы верхний регистр или строчный регистр. Если программа обнаруживает строчную букву во входном потоке, программа распечатает букву в виде символа и ее шестнадцатеричном номере. Когда он сталкивается с EOF, и все введенные буквы являются верхним регистром, программа будет печатать «Все введенные буквы являются верхним регистром», и программа также будет считать все введенные буквы, этот номер также будет отображаться. Я действительно новичок в программировании, пожалуйста, проявляйте терпение со мной.C программа. Верхняя или нижняя ... бит маскирования и while loop

Это мой код

#include <stdio.h> 

int main(void) 
{ 
char myChar; 

do 
{ 
    myChar = getchar(); 
    printf("%02x ",myChar); // this is here to help debugging 

    if(myChar == EOF) // if get user enters an EOF or the EOF is reached 
    { 
     printf("All are caps\n"); 
     // print number of letters entered 
     // break out of loop and end program 
    } 

} 
while(((myChar&0x20) == 0)); 
{ 
     printf("\n"); 
     printf("entered LOWER CASE = %c \n",myChar); 
     printf("The hex value is = %x \n",myChar); // hex value of lower case letter 

} 
system("pause"); 
return 0; 
} 
+3

Какой бит вы возникли проблемы с? Каков ваш вклад, какой результат вы получаете, и какой результат вы ожидали? –

+2

'myChar' должен быть' int', а не 'char', иначе вы не сможете надежно обнаружить' EOF'. –

+2

Некоторые наблюдения: 'getchar()' return 'int',' EOF' is * not * a 'char', и вы должны использовать' islower() 'для проверки нижнего регистра. – unwind

ответ

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

int main(void){ 
    int myChar; 
    int allCaps = 1; 
    int count = 0; 

    while(EOF!=(myChar = getchar())){ 
     if(isupper(myChar)){ 
      ++count; 
     } else { 
      if(islower(myChar)){ 
       printf("entered LOWER CASE = %c\n", myChar); 
       printf("The hex value is = %02x\n", myChar); 
      } else if(myChar == '\n'){ 
       continue; 
      } 
      allCaps = 0; 
     } 
    } 
    if(allCaps){ 
     printf("All letters entered are upper case\n"); 
     printf("number of letters entered : %d\n", count); 
    } 
    system("pause"); 
    return 0; 
} 
Смежные вопросы