이스케이프 시퀀스 | 출력 내용 |
---|---|
\' | 작은따옴표 |
\" | 큰따옴표 |
\? | 물음표 |
\ | 백슬래시 |
\a | 경고음 발생 |
\b | 백스페이스 |
\n | 줄 바꿈 |
\r | 캐리지 리턴 |
\t | 수평 탭 |
\v | 수직 탭 |
\f | 폼 피드 |
서식 지정자 | 출력 데이터 형태 |
---|---|
%c | 하나의 문자, 홑따옴표로 묶음 |
%s | 문자열, 쌍 따옴표로 묶음 |
%d | 부호 있는 10진 정수 |
%i | 부호 있는 10진 정수 (%d와 동일) |
%f | 고정 소수점으로 표현한 실수 (소수점 이하 6자리까지 표현) |
%o | 부호 없는 8진 정수 |
%u | 부호 없는 10진 정수 |
%x | 부호 없는 16진 정수 (소문자 사용) |
%X | 부호 없는 16진 정수 (대문자 사용) |
%e | 부동 소수점으로 표현한 실수 (e-표기법) |
%E | 부동 소수점으로 표현한 실수 (E-표기법) |
%g | 값에 따라 %f나 %e를 사용 |
%G | 값에 따라 %f나 %E를 사용 |
%% | 퍼센트(%) 기호 출력 |
파일 : 하나의 단위로서 취급되는 연관된 레코드의 조직적인 집단
파일의 종류 : 텍스트 파일 + 이진 파일
파일 처리 루틴 : (1) 파일 열기 -> (2) 파일 읽기/ 쓰기 -> (3) 파일 닫기
파일 열기 함수 fopen()
문법 : FILE fopen(const char name, const char *mode) // 파일 이름, 파일 모드
FILE *fp;
fp = fopen("test.txt", "w");
```
위와 같은 방식으로 사용하며 파일 열기 실패시 NULL 반환
모드 | 설명 |
---|---|
"r" | 읽기 모드로 파일을 연다. |
"w" | 쓰기 모드로 파일 생성, 파일이 존재하면 기존 내용이 지워진다. |
"a" | 추가 모드로 파일을 생성. 파일이 있으면 데이터가 끝에 추가 된다. |
"r+" | 읽기와 쓰기 모드로 파일을 연다. 파일이 반드시 존재해야한다. |
"w+" | 읽기와 쓰기 모드로 파일을 생성, 파일이 존재하면 새 데이터가 기존 데이터를 덮어쓴다. |
"a+" | 읽기와 추가 모드로 파일을 연다. 파일이 존재하면 데이터가 파일 끝에 추가된다. 읽기는 어떤 위치에서나 가능 |
"b+" | 이진 파일 모드로 파일을 연다. |
FILE *fp;
fp = fopen("test.txt", "w");
fclose(fp);
```
// 소스코드
#include <stdio.h>
#pragma warning(disable:4996)
int main()
{
printf("문제 : 3 * 3 구구단을(본인학번.txt) 파일로 출력하는 프로그램 \n");
printf("============================\n");
int c;
FILE *fp = NULL;
fp = fopen("2017E7043.txt","a+");
if (fp == NULL)
{
printf("파일 열기 실패\n");
printf("============================\n");
}
else
{
printf("파일 열기 성공\n");
printf("============================\n");
}
while ((c = fgetc(fp)) != EOF)
{
putchar(c);
}
printf("============================\n");
printf("작성자 : 2017E7043 최주영\n");
fclose(fp);
}
// 소스코드
#include <stdio.h>
#pragma warning(disable:4996)
int main()
{
printf("문제 : 3 * 3 구구단을(본인학번.txt) 파일로 출력하는 프로그램 \n");
printf("============================\n");
char buffer[100];
int i;
FILE *fp = NULL;
fp = fopen("2017E7043.txt","a+");
if (fp == NULL)
{
printf("파일 열기 실패\n");
printf("============================\n");
}
else
{
printf("파일 열기 성공\n");
printf("============================\n");
}
for (i = 0; i < 10; i++) {
if (fgets(buffer, 100, fp) == EOF) break;
printf("%s", buffer);
}
printf("============================\n");
printf("작성자 : 2017E7043 최주영\n");
fclose(fp);
}
// 소스코드
#include <stdio.h>
#pragma warning(disable:4996)
int main()
{
printf("문제 : 스티브잡스(Steve Jobs) 스탠포드 연설문에 있는 알파벳의 개수는 몇 개인가 ?\n");
printf("============================\n");
int alpha[52] = { 0 };
int i;
int j = 65;
int k = 97;
int c, pos;
FILE *fp = NULL;
fp = fopen("Steve Jobs.txt","a+");
if (fp == NULL)
{
printf("파일 열기 실패\n");
printf("============================\n");
}
else
{
printf("파일 열기 성공\n");
printf("============================\n");
}
while ((c = fgetc(fp)) != EOF)
{
if (c >= 65 && c <= 90) {
pos = c - 65;
alpha[pos] += 1;
}
if (c >= 97 && c <= 122) {
pos = c - 71;
alpha[pos] += 1;
}
}
for (i = 0; i <= 25; i++,j++)
{
printf("%c : %d개\n", j, alpha[i]);
}
for (i = 26; i <= 51; i++, k++)
{
printf("%c : %d개\n", k, alpha[i]);
}
printf("============================\n");
printf("작성자 : 2017E7043 최주영\n");
fclose(fp);
}
// 소스코드
#include <stdio.h>
#pragma warning(disable:4996)
// 공백을 기준으로 단어의 개수를 셌습니다. ex 12,2005. -> 1단어
int main()
{
printf("문제 : 스티브잡스(Steve Jobs) 스탠포드 연설문에 있는 단어의 개수는 몇 개인가 ?\n");
printf("============================\n");
int cnt = 0;
char c;
int last_was_space = 1;
FILE* fp = NULL;
fp = fopen("Steve Jobs.txt", "a+");
if (fp == NULL)
{
printf("파일 열기 실패\n");
printf("============================\n");
}
else
{
printf("파일 열기 성공\n");
printf("============================\n");
}
while ((c = fgetc(fp)) != EOF)
{
if (c == ' ')
{
if (!last_was_space)
{
cnt++;
last_was_space = 1;
}
}
else
{
if (c != '\n')
{
last_was_space = 0;
}
}
}
if (!last_was_space) ++cnt;
printf("Steve Jobs 파일안의 단어의 개수는 = %d개\n",cnt);
printf("============================\n");
printf("작성자 : 2017E7043 최주영\n");
fclose(fp);
}