C 언어에서 입력과 출력 함수
안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 C 프로그래밍의 입력과 출력(I/O) 세계로 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 선생님이자 저는 이 코딩의 필수적인 부분을 안내해드리기 위해 여기 있습니다. 그럼 가상의 메모 pads를 집어들고, 함께 들어보겠습니다!
C에서의 표준 파일
먼저 키보드를 두들기기 전에, 기본적인 것에 대해 이야기해봅시다: C의 표준 파일. 여러분이 C 프로그램을 실행할 때, 자동으로 세 개의 파일을 엽니다. 마치 세 명의 유용한 어시스턴트가 프로그램의 외부와의 소통을 관리해주는 것처럼입니다.
- stdin (표준 입력)
- stdout (표준 출력)
- stderr (표준 오류)
이 파일들은 프로그램의 사용자와 시스템과의 통로입니다. stdin은 프로그램의 귀, stdout은 입, stderr은 무언가 잘못되었을 때 소리를 지르는 방법으로 생각해보세요. 멋지죠?
입력과 출력 함수의 유형
이제 이 파일들과 상호작용하는 도구에 대해 이야기해보겠습니다. C에서는 두 가지 주요 유형의 I/O 함수가 있습니다:
- 형식 없는 I/O 함수
- 형식 있는 I/O 함수
형식 없는 함수는 원시 데이터를 다루며, 형식 있는 함수는 데이터의 형식을 지정할 수 있게 해줍니다. 그것은/plain rice(형식 없음)과 아름답게 배치된 고급 요리(형식 있음) 사이의 차이와 같습니다. 둘 다 일을 해결하지만, 하나는 표현에 더 많은 제어를 주기 때문입니다!
형식 없는 문자 입력 및 출력 함수: getchar()와 putchar()
simple한 것으로 시작해보겠습니다. 형식 없는 문자 I/O. getchar()
과 putchar()
을 만나보세요.
getchar()
getchar()
는 표준 입력(보통 키보드)에서 단일 문자를 읽습니다. 마치 단일 문자를 기다리는 인내심 있는 청취자처럼입니다.
#include <stdio.h>
int main() {
char ch;
printf("Enter a character: ");
ch = getchar();
printf("You entered: ");
putchar(ch);
return 0;
}
이 예제에서 getchar()
은 여러분이 문자를 입력할 때까지 기다렸고, 그 문자를 ch
에 저장합니다. 이렇게 간단하지만 강력합니다!
putchar()
putchar()
는 getchar()
의 반대입니다. 표준 출력(보통 화면)에 단일 문자를 출력합니다. 마치 단일 글자를 알리는 시위대처럼입니다.
#include <stdio.h>
int main() {
char ch = 'A';
printf("Printing a character: ");
putchar(ch);
return 0;
}
여기서 putchar(ch)
는 화면에 문자 'A'를 표시합니다. 간단하고 효과적입니다!
형식 있는 문자열 입력 및 출력 함수: gets(), fgets(), puts(), 및 fputs()
이제 레벨 업하고 문자열 I/O에 대해 이야기해보겠습니다. 이 함수들은 전체 문자열을 처리합니다.
gets()와 fgets()
gets()
는 stdin에서 한 줄을 버퍼에 읽습니다. 그러나 버퍼 오버플로를 확인하지 않기 때문에 안전하지 않다고 간주됩니다. 그래서 더 안전한 사촌 fgets()
을 사용하는 것이 좋습니다.
#include <stdio.h>
int main() {
char name[50];
printf("Enter your name: ");
fgets(name, sizeof(name), stdin);
printf("Hello, %s", name);
return 0;
}
이 예제에서 fgets()
는 한 줄의 텍스트(여러분의 이름)를 name
배열에 읽습니다. 이것은 안전합니다因为我们指定了要读取的最大字符数。
puts()와 fputs()
puts()
는 문자열을 stdout에 쓰고 줄 바꿈을 추가합니다. 파일 스트림 대체인 fputs()
가 있습니다.
#include <stdio.h>
int main() {
char greeting[] = "Hello, World!";
puts(greeting); // 출력: Hello, World! (줄 바꿈 포함)
fputs(greeting, stdout); // 출력: Hello, World! (줄 바꿈 없음)
return 0;
}
puts()
는 자동으로 줄 바꿈을 추가하지만, fputs()
는 더 많은 제어를 제공합니다.
형식 있는 입력 및 출력 함수: scanf()와 printf()
이제 C의 I/O의 중요한 하이퍼히트를 다룰 차례입니다: scanf()
과 printf()
. 이 함수들은 다재다능하고 강력합니다.
scanf()
scanf()
는 stdin에서 형식 있는 입력을 읽습니다. 마치 까다로운 먹는 사람처럼, 지정된 형식으로 준비된 음식만 먹습니다.
#include <stdio.h>
int main() {
int age;
float height;
printf("Enter your age and height: ");
scanf("%d %f", &age, &height);
printf("You are %d years old and %.2f meters tall.\n", age, height);
return 0;
}
여기서 scanf()
는 입력에서 정수(%d
)와 실수(%f
)를 읽습니다. &
는 age
와 height
의 위치를 scanf()
에 알리는 중요한 부분입니다.
printf()
printf()
는 scanf()
의 출력 대체입니다. 마치 아름답게 포장된 이야기꾼처럼, 데이터를 아름답게 형식화합니다.
#include <stdio.h>
int main() {
int apples = 5;
float price = 0.75;
printf("I have %d apples, each costing $%.2f.\n", apples, price);
return 0;
}
이 예제에서 printf()
는 데이터를 아름답고 읽기 쉽게 포맷합니다.
C에서의 포맷 지정자
포맷 지정자는 scanf()
과 printf()
의 강력한 비밀 재료입니다. 데이터를 해석하거나 표현하는 방법을 지시하는 지시사항입니다.
다음은 일반적인 포맷 지정자 표입니다:
지정자 | 데이터 유형 |
---|---|
%d | 정수 |
%f | 실수 |
%c | 문자 |
%s | 문자열 |
%lf | 더블 |
%x | 16진수 |
%o | 8진수 |
%p | 포인터 |
이 지정자를 수정할 수 있습니다. 예를 들어, %.2f
는 실수를 소수점 이하 2자리로 출력하고, %5d
는 정수를 5자리 너비 필드에 출력합니다.
그리고 여러분! C의 입력과 출력 기본을 다루었습니다. 연습이 완벽을 만듭니다. 그럼 밖으로 나가서 코딩을 시작해보세요! 아마도 다음 큰 기술 혁신을 만들 수도 있습니다. 다음에 만날 때까지, 행복한 코딩을 기원합니다!
Credits: Image by storyset