2014-09-16 2 views
-3

사용자가 원하는만큼 많은 문자를 자로 입력 할 수있게 해주는 프로그램을 작성하려고합니다. 그러면 프로그램은 문자가 대문자인지 소문자인지 확인합니다. 프로그램이 입력 스트림에서 소문자를 감지하면 프로그램은 문자 유형과 16 진수로 문자를 인쇄합니다. 그것이 EOF를 만나고 입력 한 모든 문자가 대문자 인 경우 프로그램은 "입력 한 모든 문자는 대문자입니다"라고 인쇄하고이 번호로 입력 된 모든 문자도 계산합니다. 나는 프로그래밍에있어 정말 새로운 인내심을 갖고있다.C 프로그램. 위 또는 아래 ... 비트 마스킹 및 while 루프

이 내 코드 비트는 당신이 어려움을 겪고있는

#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'는'char'이 아니라'int'이어야합니다. 그렇지 않으면'EOF'를 신뢰할 수 없게 탐지 할 수 없습니다. –

+2

일부 관측은'getchar()'int'를 리턴하고'EOF'는'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; 
}