출력 함수
printf, putchar, puts, putch
입력 함수
scanf, getchar, gets, getch
printf
printf("abcde");
printf("abc\nde"); // \n 은 Enter키를 치는 효과와 같다.
printf("abc\tde"); // \t 은 TAB키를 치는 효과와 같다.
printf("abc\\de"); // \를 표현해주기 위해서는 \\ 두번을 넣어야 한다.
char a = 127, b = -1;
printf("a=%d b=%d\n", a, b);
%d decimal 10진수
printf("a=%u b=%u\n", a, b);
%u unsigned 10진수
printf("a=%o b=%o\n", a, b);
%o octal 8진수
printf("a=%x b=%x\n", a, b);
%x hexa 16진수 소문자 %X 대문자 표기
printf("a=%p b=%p\n", &a, &b);
%p pointer 주소값 표시
printf("a=%c b=%c\n", a, b);
%c character 주소값 표시
printf("a=%p b=%p\n", &a, &b);
%p pointer 주소값 표시
printf("a %% b= %d\n", a % b);
%% %문자 그자체를 표시 (가끔씩 헷갈리기 쉽다)
float pi = 3.14f; // Tip 3.14f 는 4bytes float를 의미 3.14는 8bytes double을 의미
printf("파이(고정소수점) = %f\n", pi); // 파이(고정소수점) = 3.140000
%f 고정 소수점 표시
소수점 1자리만 표시하고 싶다면 %.1f
소수점 2자리만 표시하고 싶다면 %.2f
printf("파이(부동소수점) = %e\n", pi); // 파이(부동소수점) = 3.140000e+000
%e 부동 소수점 표시
printf("파이(일반소수점) = %g\n", pi); // 파이(일반소수점) = 3.14
%g 일반 소수점 표시
char name[10] = "Neo";
int age = 20;
printf("Your name is %s. Your are %d years old.\n", name, age);
%s 문자열로 출력한다.
정확한 의미는 문자열의 끝을 알리는 NULL를 만날때 까지 출력하라는 의미이다.
scanf
scanf 는 콘솔창의 키보드로 부터 형식화(포맷화)된 입력으로 받는다.
형식화된 입력이란 scanf 의 인수 중 문자열에서 어떤 데이터 형식으로 받을지 지정하여 입력받은 후 대응되는 변수의 주소값을 이용하여 입력 받은 데이터를 저장한다. % 형식은 printf와 별반 차이가 없다.
int a;
scanf("%d", &a); // 변수 a 안에 키보드로 부터 정수형의 데이터를 입력받는다.
<질문1>
왜 입력을 받을때 주소값이 필요할까?
<질문2>
char name[10];
scanf("%s", name); // 1번
scanf("%s", &name); // 2번
어떤 문장은 맞는 표현일까?
int a, b, c;
float d;
char name[10];
scanf("%s%d%d%d%f", name, &a, &b, &c, &d); // 여러 데이터를 한꺼번에 처리할 수 있다.
유의점
1. printf 와 달리 공백이 들어가 있으면 안된다. 초보들이 흔히하는 실수
scanf("%d %d %d", &a, &b, &c); (X)
2. %c를 써서 입력 받기를 원할때 문제가 될 수 있다.
#include <stdio.h>
void main()
{
int a;
char b;
char name[10];
scanf("%d%c%s", &a, &b, name);
printf("a = %d b = %c name = %s\n", a, b, name);
}
제대로 된 출력이 나오는지 확인한다.
#include <stdio.h>
#include <conio.h>
void main()
{
int a = 1;
char name[10]= "Neo";
char b =getch();
putch(b);
printf("a = %d b = %c(%d) name = %s\n", a, b, b, name);
}
디버그하는 방법을 알아보자!