다음 코드를 완성하여 출력 예시와 같이 출력하는 프로그램을 작성해주세요.
소스 이름은 "example3. 게임 캐릭터 인포메이션 만들기.c"로 하시기 바랍니다.
#include <stdio.h>
#include <string.h>
#define NAME_SIZE 100
int main()
{
char name[NAME_SIZE];
printf("캐릭터 이름을 입력해주세요. : ");
gets_s(name, NAME_SIZE);
char grade;
int hp, mp, atk, def, speed;
// --------------------------------------------------
// 여기에 들어갈 코드 작성
//
// --------------------------------------------------
return 0;
}
[출력 예시]
HP와 MP의 필드폭은 4칸, 공격력과 방어력, 이동 속도의 필드폭은 3칸으로 지정해주세요.
이름, Hp, 공격력, 이동 속도의 :(콜론)의 수평 위치가 같아야 하고,
MP, 방어력, 등급의 :(콜론)의 수평 위치가 같아야 합니다.
-로 그은 직선에서 -의 개수는 69개입니다.
printf("캐릭터의 등급을 입력해주세요. : ");
scanf_s(" %c", &grade, 1); // scanf_s(" %c", &grade)도 맞습니다.
|
cs |
캐릭터의 등급을 입력받을 때에,
scanf_s("%c", &grade, 1); 이 아니라
scanf_s(" %c", &grade, 1); 과 같이 %c 앞에 띄어쓰기를 넣어주어야 할 겁니다.
왜냐하면,
이전에 정수 5개를 입력받을 때에 여러분이 입력한 문자열은
"1000 200 150 120 80"이 아니라
"1000 200 150 120 80(엔터키)"이기 때문입니다.
엔터키를 누른 것에 해당하는 부분이 아직 처리되지 않은 입력으로 남아있습니다.
만약 %d나 %f에 입력받을 때에는 어차피 공백은 숫자가 아니니 엔터키를 무시해도 되지만,
%c에 입력받을 때에는 공백도 문자이므로, %c에 공백을 받아버릴 수가 있기 때문에
엔터키에 해당하는 공백을 한 개 미리 받아줘야 합니다.
#include <stdio.h>
#include <string.h>
#define NAME_SIZE 100
int main()
{
char name[NAME_SIZE];
printf("캐릭터 이름을 입력해주세요. : ");
gets_s(name, NAME_SIZE);
char grade;
int hp, mp, atk, def, speed;
// --------------------------------------------------
// 여기에 들어갈 코드 작성
printf("캐릭터의 체력, 마나, 공격력, 방어력, 이동 속도를 공백(' ')으로 구분하여 입력해주세요.\n");
scanf_s("%d %d %d %d %d", &hp, &mp, &atk, &def, &speed);
printf("캐릭터의 등급을 입력해주세요. : ");
scanf_s(" %c", &grade, 1); // scanf_s(" %c", &grade)도 맞습니다.
printf("\n[캐릭터 정보]\n");
printf("--------------------------------------------------------------------\n");
printf("이름\t\t: %s\n", name);
printf("HP\t\t: %-4d / %-4d\tMP\t\t: %-4d / %-4d\n", hp, hp, mp, mp);
printf("공격력\t\t: %-3d\t\t방어력\t\t: %-3d\n", atk, def);
printf("이동 속도\t: %-3d\t\t등급\t\t: %c\n", speed, grade);
printf("--------------------------------------------------------------------\n");
// --------------------------------------------------
return 0;
}
|
cs |
한 가지 팁으로,
![](https://blog.kakaocdn.net/dn/ccUO6E/btrGAKaTiPG/BHXhpWdrObShp1CnC8wfuk/img.png)
printf("--------------------------------------------------------------------\n");
부분에 마우스를 가져다 대면, (char [70])이라고 툴팁이 표시됩니다.
해당 문자열이 70개의 문자로 이루어져 있다는 뜻입니다.
\n도 하나의 문자로 취급되니, 저 문자열이 70개의 문자로 이루어져 있다면 -는 69개가 있는 것이죠.
-를 막 누른 다음에 툴팁에 뜨는 개수에 맞게 조정하시면 편하게 개수를 맞출 수 있습니다.
'C | C++ > C' 카테고리의 다른 글
[C] example2. 점과 직선 사이의 거리 구하기 (0) | 2022.07.06 |
---|---|
[C] example1. 문자를 입력받아 아스키코드로 출력하기 (0) | 2022.07.06 |
[C] 6. printf를 좀 더 잘 써봅시다. <필드폭 및 소수점 조정, 이스케이프 문자> (1) | 2022.07.05 |
[C] 5. 입출력은 프로그램의 근본입니다. <printf, scanf> (0) | 2022.07.05 |
[C] 4. 변수의 최댓값을 넘기면 무슨 일이 일어날까요? <오버플로우, 언더플로우, 랩 어라운드> (0) | 2022.07.03 |