2017-10-21 13 views
1

C 프로그래밍에서 char 유형에 대한 사용자 입력을 제어하는 ​​방법 ??C 프로그래밍에서 'char'유형에 대한 사용자 입력을 제어하는 ​​방법은 무엇입니까?

문제 : 첫 번째 입력 한 다음 프로그램은 '연령'

출력을 제공하도록 요청하지 않았다으로 사용자가 '남성'을주는 경우에

입력 성 (M/F) : 남성

귀하의 성별은 남성 (M)이다

Y :

나이를 입력 우리 나이 : 71 // 쓰레기 값

#include <stdio.h> 

int main() 
{ 
    char gender; 
    int age; 

    printf("\nEnter gender(M/F):"); 
    scanf("%c", &gender); 

    printf("\nEnter age:"); 
    scanf("%d", &age); 

    if(gender=='M'){ 
     printf("\nYour Gender is Male(%c)",gender); 
    }else{ 
     printf("\nYour Gender is not Male(%c)",gender); 
    } 

    printf("\nYour Age a:%d",age); 

    return 0; 
} 

예상 출력 : 사용자가 입력 '남성'을 주면/'여성'/ 'M'/ 'F'는 다음 다음 콘솔 나이을주고 물을 것이다 를 입력 히트

성별을 입력 (M/F) : 남성

는 입력 연령 : 23

귀하의 성별은 & 성

을에 남성 (M) // 기지

나이 : 23

+1

C = C++. 둘 다 실제로 관련이없는 한 사용중인 언어로만 태그하십시오. – tambre

+2

나는 당신이 그것을 사용할 때마다'scanf' *의 반환 값을 확인하기를 권합니다. ** Male **을 입력하고 한 글자를 읽으면, 정수를 스캔하려고 할 때 무엇을 읽겠습니까? –

+0

어떤 운영 체제에 있습니까? [this] (https://stackoverflow.com/a/46763120/841108) –

답변

-2

gets() 또는 char 배열과 Strcmp()를 사용하여 문자열을 비교하십시오.

#include <stdio.h> 
#include <string.h> 

int main() 
{ 

char gender[40]; 
int age; 

printf("\nEnter gender(M/F):"); 
gets(gender); 

printf("\nEnter age:"); 
scanf("%d", &age); 

if(gender=="M" || (strcmp(gender, "Male")==0)){ 
    printf("\nYour Gender is Male(%s)",gender); 
}else{ 
    printf("\nYour Gender is not Male(%s)",gender); 
} 

printf("\nYour Age a:%d",age); 

return 0; 
} 
+2

'gets'는 너무 안전하지 않고 버퍼 오버런에 취약하기 때문에 C11 표준에서 제거되었습니다. 절대 절대로 사용하지 마십시오. 대신'fgets'을 사용하십시오. (즉, * 형식화 된 입력 * 함수 대신 * 행 지향 * 입력 함수를 사용하라는 제안에 대해 호평을합니다) –

+0

'gender == "M"'==>'gender [0] == 'M '' 또한 입력 방법을 혼합하지 않는 것이 좋습니다. 이 경우 –

1

당신은 고통을 읽을 수 있지만, 당신이 당신의 코드를 문자를 사용하므로 변경됩니다

char gender[7]; 
scanf("%6s", gender); 
... 
if (gender[0] == 'm' || gender[0] == 'M') 
    printf("\nYour Gender is Male(%c)", gender[0]); 
... 

두 번째 솔루션 :

그냥 성별 fgets()를 사용 , 문자열을 읽을 수 있기를 원하기 때문에 다음과 같이 나이가 scanf() 인 경우 :

012 35,

출력 :!

Enter gender(M/F): f 
Enter age: 25 
Your Gender is Female(f) 
Your Age is: 25 
+0

성별 변수는 char 유형 배열이어야합니다. –

+0

정확히 @HMMOHIDULISLAMSHOVON, 제 대답과 같습니다. =) – gsamaras

+0

@ H.M.MOHIDULISLAMSHOVON 그리고 여러분은 입력을''M ''이 아닌''남성 '''으로주었습니다. –