프로그래밍

C언어 배우고있는데.. 모르는게있습니다

#include <stdio.h>
#include <string.h>
void Register(char* id, char* passwd)
{
    printf("아이디 입력 : ");
    gets_s(id, 100);
    printf("비밀번호 입력 : ", id);
    gets_s(passwd, 100);
    printf("가입 완료!\n");
}
int loginCheck(char* id, char* checkid, char* passwd, char* checkpasswd)
{
    if (!strcmp(id, checkid) && !strcmp(passwd, checkpasswd))
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
void login(char* checkid, char* checkpasswd)
{
    printf("아이디 입력 ");
    gets_s(checkid, 100);
    printf("비밀번호 입력 ");
    gets_s(checkpasswd, 100);
}

void main()
{
    int a;
    char id[100];
    char passwd[100];
    char checkid[100];
    char checkpasswd[100];
    printf("1.회원가입 2.로그인");
    scanf_s("%d", &a);
       switch (a)
    {
    case 1:
        printf("회원가입 입니다\n");
    Register(id, passwd);

    break;
    case 2:
    login(checkid, checkpasswd);
    
    break;
    if (loginCheck(id, checkid, passwd, checkpasswd))
    {
        printf("로그인 성공!");
    }
    else
    {
        printf("로그인 실패!");
    }
    }
}

 

 

 

아직 미완성인 소스인데

 

void Register 함수에서 출력이

 

아이디 입력 : 비밀번호 입력 : 이런식으로 출력되고 한번만 값이 기입됩니다..

 

원래는

 

아이디 입력 :      값 입력후    >    비밀번호 입력 :      값 입력후 다음 으로 넘어감 

 

이런식으로 잘됬었는데..

 

제생각에는

 

    scanf_s("%d", &a); 

 

스캔이거 붙이고나서 부터 그런거같은데

 

왜일까요?;;;

7개의 댓글

거기다가 break point 잡아놓고 a에 뭐 들어가는지 디버깅 ㄱ

0
2019.04.24

scanf_s에서 입력을 하면 1을 입력하면 1과 엔터를 입력하고 1은 scanf_s의 입력으로 들어가고

엔터는 login의 gets_s의 입력으로 들어가서 넘어가버려서 그런듯

scanf_s 다음에 fflush(stdin)으로 입력 버퍼 비워주던지

while(getchar() != '\n'); 라인 넣어주면 해결 될 듯

 

visual studio 최신버전은 fflush 안되는걸로 알고있으므로 while문 넣으면 될꺼임

0
2019.04.24
@흔한개드립의

감사합니다!!!

0
2019.04.24
@흔한개드립의

fflush는 "출력" 버퍼를 지우는 함수이기 때문에 입력버퍼를 비울 때 쓰면 안된다

0
2019.04.24
@달세뇨

넵 감사합니다!

0
2019.04.24
@달세뇨

리눅스환경에서만 짜다보니ㅋㅋㅋ

해결법이 틀렸구마잉

뭐 원인은 알려줬으니 해결했겠지

0
2019.04.24

이미 해결했겠지만 문제는 위에서 써준게 맞고, 다른 해결방법으로는

%c로 입력받아서 [ - '0' ] 해주면 int형 정수로 떨어지는 방법이 있고

%c로 입력받아서 case문을 '1', '2', 처럼 문자로 지정해주는 방법도 있어

이렇게 하면 혹시 예기치못한 문자 입력으로 일어나는 버그 상황도 처리할 수 있지

나는 이쪽이 좀 더 깔끔한 것 같아서 이렇게 알려주는 편

fflush()는 비표준함수라 지양

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180602 [모바일] 아니 s21이 169g이고 s24u가 233g인데 말이되나 7 마법부오러사무국장 0 5 시간 전 148
180601 [잡담] 드디어 cpu 배송시작한다 4 차원에서사는인간 0 9 시간 전 188
180600 [컴퓨터] 다빈치 리졸브 쓰는분있나여 4 afterschool 0 10 시간 전 121
180599 [모바일] 아이패드 저장공간 질문 6 가나가다라 0 11 시간 전 127
180598 [컴퓨터] 150~200 4K 게이밍 견적 부탁 드려봅니다 11 라면死리 0 11 시간 전 136
180597 [잡담] sn850x 1tb 방열판 없어도 괜찮죠?? 10 김빵순 0 13 시간 전 99
180596 [컴퓨터] Am5 메인보드 asrock b650m pg lightning vs gigabite b650m-k 8 죽업 0 14 시간 전 93
180595 [모바일] s21 3년째쓰다가 s24 울트라로바꾸고 느낀점 5 마법부오러사무국장 0 20 시간 전 555
180594 [견적] 중고 노트북 한번바조요 5 쯔네이 0 22 시간 전 150
180593 [컴퓨터] 간헐적 모니터 화면 깜빡거림은 왜생기는걸까요? 22 파라다이스 0 23 시간 전 171
180592 [모바일] 태블릿사서 사용용도 11 오브 0 1 일 전 316
180591 [컴퓨터] 배그 멈춤현상 도와주세요(내용수정하였습니다,) 12 크크르삥뽕 0 1 일 전 130
180590 [컴퓨터] 드디어 컴퓨터 다 샀다ㅜㅜㅜ 24 뽀삐뽀삐 0 1 일 전 343
180589 [견적] 9700k 쓰고 있는데 컴퓨터 업글하려면 라이젠 뭐 사는게 좋음? 11 쪄까튼쎼쌍 0 1 일 전 204
180588 [컴퓨터] jpg 열화 막는법? 7 정병장기입원 0 1 일 전 276
180587 [모바일] 윈도우pc와 아이폰 사진연동 안되나? 5 cw 7 0 1 일 전 129
180586 [견적] 개붕이 견적 도와죠요 3 가기그게그거 0 1 일 전 88
180585 [모바일] 이거 삼전케어플러스로 넘어가야할정도임? 2 마법부오러사무국장 0 1 일 전 259
180584 [컴퓨터] 모니터 이상함 1 띵똥이 0 1 일 전 92
180583 [모바일] A25가 그렇게 별로임?? 7 울그락푸르락 0 1 일 전 183