잡담/문답 C++ 할 줄 아시는분!
페이지 정보
본문
char name[10], pyung[10];
int age;
double weight, height;
//입력
printf("이름:");
gets(name);
printf("나이:");
scanf("%d", &age);
printf("키:");
scanf("%lf", &height);
printf("몸무게:");
scanf("%lf", &weight);
printf("평점:");
gets(pyung);
//아래부터 출력
printf("신상명세서\n");
printf("이름:%s\n", name);
printf("나이:%d\n", age);
printf("키:%.2fcm\n", height);
printf("몸무게:%.2fkg\n", weight);
printf("평점:%c", pyung);
}
gets(pyung);
You idiot!
댓글목록
gom님의 댓글
gom이름으로 검색 아이피 (211.♡.204.173) 작성일
초반의 gets에서의 입력은 아마도 제대로 되고 후반부의 gets에서 에러가 날듯하네여. 아마도
gets는 버러안에서 \n(뉴라인)까지 읽어들여 실행하는 부분이 되는데. 초반의 gets는 어떤 키보드 입력 전까지는 버퍼에 어떠한 것도 입력되어 있지 않다가 키보드를 치고 엔터를
치는순가 gets는 엔터친것까지 읽어들이게 되죠. 후반부의 gets는 평점 앞에서 scanf로 엔터를 눌러 입력할때 버퍼안에 엔터가 자동으로 들어가버려서 scanf뒤에 gets가 오게 되면
제대로 실행이 되지 않습니다. 그래서 일반적으로는 fflush로 버퍼를 지우고 gets를 쓰게 되는데 ....gets는 그다지 입력에 제한도 많고 문제가 많으니 scanf로 하시는게 좋으실겁니다.
gom님의 댓글
gom이름으로 검색 아이피 (211.♡.204.173) 작성일
gets(pyung); -> scanf("%s",pyung); 으로 바꾸시면 아마도? 제대로 될겁니다. c,c++언어를 안한지 몇년되었고, vc가 안깔려 있어 확인은 못해보네여 :D
물론 name 도
scanf("%s",name); 으로 바꾸시는게 좋을듯하네요, gets(pyung); -> scanf("%s",pyung); 으로 바꾸시면 아마도? 제대로 될겁니다. c,c++언어를 안한지 몇년되었고, vc가 안깔려 있어 확인은 못해보네여 :D
물론 name 도
scanf("%s",name); 으로 바꾸시는게 좋을듯하네요,