🤍 C 언어의 함수
: printf, scanf, puts, getchar, gets, fgets, fputs, fscanf, fprintf, fread, fwrite, sprintf, sscanf, getc, putc, fgetc, fputc
| 함수 | 용도 | 특징 | 사용 예시 | 주요 차이점 |
| printf | 포맷된 출력 | 포맷 문자열을 통해 다양한 형식으로 출력 | printf("값: %d\n", 10); | 포맷 문자열을 지원 // 파일 입출력: fprintf, 문자열 입출력: sprintf |
| scanf | 포맷된 입력 | 포맷 문자열을 통해 다양한 형식으로 입력 | scanf("%d %s", &num, str); | 포맷 문자열을 지원 // 파일 입출력: fscanf, 문자열 입출력: sscanf |
| puts | 문자열 출력 | 개행 문자가 자동으로 추가 | puts("Hello, World!"); | 개행 문자 자동 추가 // 파일 입출력: fputs |
| getchar | 단일 문자 입력 | 한 문자만 입력 받음 | c = getchar(); | 한 문자 입력 |
| gets | 문자열 입력 | 입력 버퍼의 크기를 검사하지 않음 | gets(str); | 버퍼 오버플로우 위험 // 파일 입출력: fgets |
| getc | 단일 문자 입력 | 한 문자 입력, fgetc와 유사 | c = getc(stdin); | 매크로 // 파일 입출력: fgetc |
| putc | 단일 문자 출력 | 한 문자 출력, fputc와 유사 | putc(c, stdout); | 매크로 // 파일 입출력: fputc |
- 입출력 위치
- 표준 입출력 (stdout/stdin) : printf, puts, getchar, gets
- 파일 입출력 : fputs, fprintf, fscanf, fread, fwrite
- 문자열 버퍼 : sprintf, sscanf
- 포맷 지원 여부
- 포맷 지원 O : printf, scanf, fprintf, fscanf, sprintf, sscanf
- 포맷 지원 X : puts, getchar, gets, fgets, fputs, getc, putc
🤍 scanf
- 버퍼 오버플로우 해결
//입력 크기 제한
scanf("%9s", str);
//fgets로 지정된 크기만큼 문자열 입력(나머지는 버퍼에 남김)
fgets(str, sizeof(str), stdin);
- 필요 없는 특정 위치 입력값 무시
int a, b;
scanf("%d %*d %d", &a, &b); // '%*d'로 두 번째 입력 정수를 무시
- 반환값 활용
// scanf()는 입력된 항목 수를 반환
int result = scanf("%d %d", &a, &b);
if (result != 2) {
// 반환값이 2가 아니면 잘못된 입력 처리
while (getchar() != '\n'){
...
}
}
🤍 printf
- 패딩(padding)과 정렬
float pi = 3.1415926535;
printf("%.2f\n", pi); // 소수점 이하 2자리까지 출력: 3.14
int num = 42;
printf("%5d\n", num); // 5칸의 공간에 정렬하여 출력: " 42"
// 숫자가 지정된 칸을 넘지 않으면 왼쪽에 공백 추가
// 문자를 왼/오른쪽으로 정렬하고 남는 공간을 특정 문자로 채울 수 있음
printf("%05d\n", num); // 0으로 채워서 5자리 숫자로: "00042"
printf("%-5d\n", num); // 왼쪽 정렬, 공백으로 채움: "42 "
- 반환값 활용
// printf()는 출력된 항목 수를 반환
int count = printf("Hello, world!\n");
printf("출력된 문자 수: %d\n", count); // 출력된 문자 수를 확인
// output : 14
🤍 `printf`와 `scanf`의 출력 형식 지정자
| %d | 정수형 (부호 있는 10진수 정수를 출력) |
| %c | 문자 하나를 출력 (정수형 값을 받아 해당하는 아스키 문자로 변환하여 출력) |
| %p | 포인터의 주소를 출력 (메모리 주소를 16진수로 표시하며, 일반적으로 메모리 크기만큼 자릿수가 채워짐) |
| %x, %X | 16진수로 출력 (0-9는 그대로, a-f 또는 A-F로 표현) |
| %o | 8진수로 출력 (0-7로 표현) |
| %s | 문자열을 출력 (\0인 NULL 문자를 만날 때까지 문자열의 각 문자를 차례로 출력) |
| %u | 부호 없는 10진수 정수를 출력 (unsigned int 자료형을 사용할 때 사용하며, 음수는 양수로 변환되어 출력됨) |
| %f | 실수형 출력 (소수점 이하 6자리까지 출력, float 자료형에 주로 사용) |
| %lf | 실수형 출력 (소수점 이하 6자리까지 출력, double 자료형에 사용되며 더 높은 정밀도를 제공) |
| %e | 지수 형식으로 실수를 출력 (예: 1.23e+03) |
| %g | 실수를 출력할 때 자동으로 %f 또는 %e 형식을 선택하여 더 간결한 형식으로 출력 (지수 형식 또는 고정 소수점 형식 중 더 적합한 형식을 자동으로 선택) |
반응형
'언어 및 개념 일반' 카테고리의 다른 글
| [Python] 👀 Type Hints (1) | 2025.01.13 |
|---|---|
| 컴파일 에러와 런타임 에러 (1) | 2025.01.03 |
| 책 따라 Git 기릿🌱: Chapter. 3 (1) | 2024.12.24 |
| 책 따라 Git 기릿🌱: Chapter. 2 (1) | 2024.12.23 |
| 책 따라 Git 기릿🌱: Chapter. 0 1 (4) | 2024.11.22 |