1. printf()
서식 문자
int printf(Control-string, item1, item2, ...);
| 서식 문자 | 출력 형태 |
|---|---|
| %c | 단일 문자 char |
| %d(%i) | signed 10진 정수 |
| %f | 실수 float |
| %s | 문자열 string |
| %o | unsigned 8진 정수 octal |
| %p | 포인터 pointer |
| %x, %X | unsigned 16진 정수 heXadecimal |
| %e, %E | e(E) 표기법에 의한 실수 |
| %g, %G | 값에 따라 %f, %e(E) 중 선택 |
| %% | % 기호 출력 |
특수 문자
| 특수 문자 | 의미 |
|---|---|
| \b | 백스페이스 |
| \n | 개행 (enter) |
| \t | 수평 탭 |
| \\ | 백슬래시 () |
| \' | 작은 따옴표 |
| \" | 큰 따옴표 |
printf()의 return값
긴 문자열의 출력
#include <stdio.h>
int main() {
char* str = "programming language.";
printf("C is powerful"
" general-purpose %s" "\n",
str);
return 0;
}
#include <stdio.h>
int main() {
int rv = 10;
printf("The prinf() functiond printed %d
characters.\n", rv);
return 0;
}
// Compile error 발생!!
#include <stdio.h>
int main() {
printf("C is a powerful \
general-purpose \
programming language. \
\n");
return 0;
}

\ 활용\t도 출력 string의 일부가 됨2. scanf()
입력 형태
printf()의 서식 문자를 그대로 사용실수 입력 시 주의사항
개요
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int age;
float pi;
char str[30];
scanf("%d %f %s", &age, &pi, str);
printf("%d, %f, %s\n", age, pi, str);
return 0;
}

printf()의 역함수와 비슷한 역할매개변수
scanf()도 printf()와 마찬가지로 포맷 문자열 + 전달 인자 리스트 사용scanf() 함수는 scan한 내용을 전달할 매개변수로 포인터 사용 (call by reference)화이트 스페이스
scanf() 함수는 사용자의 입력을 개별 필드로 나누기 위해 화이트 스페이스 사용반환값
scanf() 함수는 성공적으로 읽은 항목의 수를 return3. printf와 scanf에서의 * 변경자
printf()에서의 * 변경자
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int width, precision;
int n = 245;
double d = 242.5;
scanf("%d", &width);
printf("n: |%*d|\n", width, n);
scanf("%d %d", &width, &precision);
printf("d= |%*.*lf|\n", width, precision, d);
}

scanf()에서의 * 변경자
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n1 = 0, n2 = 0, n3 = 0;
scanf("%d %d %d", &n1, &n2, &n3);
printf("%d %d %d\n", n1,n2,n3 );
n1 = 0, n2 = 0, n3 = 0;
scanf("%*d %*d %d", &n3);
printf("%d %d %d\n", n1, n2, n3);
return 0;
}

1. 파일의 개방(Open)
개요
파일의 개방
스트림(키보드/모니터, 파일)
| 기능/스트림 | 표준(키보드, 모니터) | 선택(키보드/모니터, 파일) |
|---|---|---|
| 문자 출력 | int putchar(int c) | int fputc(int c, FILE* stream) |
| 문자 입력 | int getchar(void) | int fgetc(FILE* stream) |
| 문자열 출력 | int puts(const char* s) | int fputs(const char* s, FILE* stream) |
| 문자열 입력 | char *gets(char*s) | char *fgets(char*s, int n, FILE* stream) |
| 형식 지정 출력 | int printf(const *format, ...) | int fprintf(FILE* stream, const *format, ...) |
| 형식 지정 입력 | int scanf(const *format, ...) | int fscanf(FILE* stream, const *format, ...) |
fopen()
#include <stdio.h>
FILE *fopen(const char *filename, const char *mode);
FILE *f = fopen("c:\\work\\test.dat", "rt");
*filename: 파일의 이름과 경로 정보를 지니는 string*mode: 개방 모드(open mode)를 나타내는 string2. 파일 접근 모드
r
w
a
3. 파일의 종결(Close)
fclose()
#include <stdio.h>
int fclose(FILE *stream);
리턴값 참조 방법
| 함수 | 파일 끝에서 return되는 값 |
|---|---|
| fgetc | EOF(-1) |
| fgets | NULL 포인터(0) |
| fscanf | EOF(-1) |
while(1){
pState=fgets(str, sizeof(str), file);
if (pState == NULL) break; // fgets()는 파일의 끝에서 NULL return
fputs(str, stdout); // 파일 내용 모니터에 출력
}
4. fread() , fwrite()
개요
사용
#include <stdio.h>
size_t fread(void *restrict ptr, size_t size, size_t nmemb, FILE *restrict fp);
size_t fwrite(const void *restrict ptr, size_t size, size_t nmemb, FILE *restrict fp);