안녕하세요. 스마트 팩토리입니다.
c 언어[008] 단일문자 문자열 입출력함수(getchar,scanf,getch: putchar printf, puts)에 대한 이해에 대해 알아보겠습니다.
(1)입력과 출력이란?
입력은 말그대로 컴퓨터에 명령어를 입력하는 것을 말합니다. 입력 장치를 생각하면 당연히 떠오르는 것이 키보드와 마우스가 있고, 게임용으로 조이스틱 등이 있습니다. 이는 컴퓨터를 작동시키기 위해 명령어를 보내어 컴퓨터가 읽을 수 있게 하는 것입니다.
출력이란 컴퓨터가 입력받은 명령어를 기계어로 수렴하여 그에 합당한 결과물을 보여주는 것을 말합니다. 입력 받은 내용을 컴퓨터가 중앙처리장치와 주기억장치를 통해서 처리한 다음에 결과물을 보여주는 장치로는 가장 흔한 것이 바로 모니터와 프린터, 스피커 등이 있습니다.
도식화 하면 위와 같습니다.
그렇다면 c언어는 컴퓨터가 알아들 수 있는 언어 즉 컴파일러가 코드를 받아서 컴퓨터가 이해할 수 있는 이진법으로 변환하여 줍니다. 그 코드를 작성하는 것이 바로 c 언어 프로그램밍입니다. 그 중에서 입력은 코드로 컴퓨터가 이해할 수 있는 언어로 표현해 주고 그것을 결과값을 받기 위해서 출력 코드가 필요한데 이를 표준입출력함수입니다.
(2) c 언어 입출력함수
c 언어 표준 입출력 함수도 다양합니다. 하지만 많이 사용하는 것 몇개 가 주로 사용됩니다. 그것에 초점을 맞춰 알아보겠습니다.
가. getchar(a);-- putchar(a);
변수 =getchar();
#include<stdio.h>
void main() {
puts("단어 하나를 입력해 주세요"); ---> puts 괄호 안에 " " 안에 문자열을 넣으면 그대로 출력입니다.
char a;
a = getchar(); --->단일 문자를 입력받는 함수
putchar(a); ---> 변수 a값을 출력함
printf("\n"); ---> 줄바꿈위해
putchar('a'); ---> 단일 문자를 받는 함수 직접 문자를 받을 경우 ' ' 작은 따옴표 안에 적습니다. 변수를
printf("\n"); ---> 줄바꿈위해
printf("a"); ---> 문자 a 를 출력 하기 위해서 변수 아님
이하 주석 처리 한 부분
//printf("\n");
//printf("%c\n", a);
//puts("문장을 입력해 주세요");
//gets_s(ch);
//fgets(ch, sizeof(ch), stdin);
}
putchar 는 큰 따옴표가 허용되지 않습니다. 문자 1개만 출력하기 때문에 ~
#include<stdio.h>
void main() {
puts("단어 하나를 입력해 주세요");
char a=getchar();
putchar(a); ---> 입력받은 문자 출력
printf("\n");
printf("%c\n", a); ---> printf 서식을 통해서 %c 는 단일문자를 출력하는 코드
--이하 주석--
//puts("문장을 입력해 주세요");
//gets_s(ch);
//fgets(ch, sizeof(ch), stdin);
}
나. gets_s , fgets(ch, sizeof(ch),stdin)
#include<stdio.h>
void main() {
puts("문장을 입력해 주세요"); --> 서식이 없이 그냥 문장 출력 위해서
char ch[10]; --> 배열로 문자열을 표현함. 배열은 다음에 따로 설명하겠음.
gets_s(ch); --> gets 가 메모리에 문제를 일으키는 경우가 많아서 아래 주석 부분을 활용하라고함. 대신에 gets_s(변수)를 사용해도 비쥬얼스튜디오 2019에서 되기는 함.
//fgets(ch, sizeof(ch), stdin);
printf("%s\n", ch); --> 서식 있는 출력을 위해서 %s 는 문자열 출력, %c는 문자출력하는 서식임.
}
#include<stdio.h>
void main() {
puts("문장을 입력해 주세요");
char ch[10]; --> 배열에서 공간은 9칸을 사용할 수 있음 마지막은 null로 남겨놓음
//gets_s(ch);
fgets(ch, sizeof(ch), stdin); --> 배열보다 쓴 글이 많아서 [love is w] 공란 포함하여 9칸임
printf("%s\n", ch);
}
#include<stdio.h>
void main() {
puts("문장을 입력해 주세요");
char ch[50]; -> 49칸을 사용하도록 하기 위해서
//gets_s(ch);
fgets(ch, sizeof(ch), stdin); --> [love is wonderful things]가 다 출력됨.
printf("%s\n", ch);
}
scanf 경우는 이전 글로 대신하겠습니다.
https://sf2020.tistory.com/13?category=806625
댓글