# ์คํธ๋ฆผ
์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋ฐ์ดํธ(byte)๋ค์ ํ๋ฆ์ผ๋ก ์๊ฐํ๋ ๊ฒ
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒํผ๊ฐ ํฌํจ๋์ด ์๋ค.
๊ธฐ๋ณธ์ ์ธ ์คํธ๋ฆผ์ ์๋ ์์ฑ๋๋ค.
ํ์ค ์คํธ๋ฆผ |
getchar() |
putchar() |
gets() |
puts() |
printf() |
scanf() |
# ์คํธ๋ฆผ๊ณผ ํ์ผ
์คํธ๋ฆผ์ ๊ตฌ์ฒด์ ์ผ๋ก FILE ๊ตฌ์กฐ์ฒด๋ฅผ ํตํ์ฌ ๊ตฌํ
FILE์ stdio.h์ ์ ์๋์ด ์๋ค.
ํ์ผ = ์คํธ๋ฆผ
# ํ์ผ์ด ํ์ํ ์ด์
๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฒ๋ค์ ์ ์์ด ๊บผ์ง๋ฉด ์ฌ๋ผ์ง๋ค. ํ์ผ ํํ๋ก ์ ์ฅ ์ ์ ์์ด ๊บผ์ ธ๋ ๋ฐ์ดํฐ๊ฐ ๋ณด์กด๋๋ค.
# ํ์ผ์ ๊ฐ๋
์ผ๋ จ์ ์ฐ์๋ ๋ฐ์ดํธ
๋ชจ๋ ํ์ผ ๋ฐ์ดํฐ ใ ก> ๋ฐ์ดํธ๋ก ๋ฐ๋์ด ํ์ผ์ ์ ์ฅ
๋ฐ์ดํธ๋ค์ ํด์ํ๋ ๊ฑด ์ ์ ์ผ๋ก ํ๋ก๊ทธ๋๋จธ ์ฑ ์
# ํ ์คํธ ํ์ผ (TEXT FILE)
์ฌ๋์ด ์ฝ์ ์ ์๋ ํ ์คํธ๊ฐ ๋ค์ด์๋ ํ์ผ
Ex) C ํ๋ก๊ทธ๋จ ์์คํ์ผ, ๋ฉ๋ชจ์ฅ ํ์ผ
์์คํค ์ฝ๋ ์ด์ฉ
์ฐ์์ ์ธ ๋ผ์ธ๋ค๋ก ๊ตฌ์ฑ
# ์ด์ง ํ์ผ (BINARY FILE)
์ฌ๋์ด ์ฝ์ ์ ์๊ณ ์ปดํจํฐ๊ฐ ์ฝ์ ์ ์๋ ํ์ผ
์ด์ง ๋ฐ์ดํฐ๊ฐ ์ง์ ์ ์ฅ๋์ด ์๋ ํ์ผ
ํ ์คํธ ํ์ผ๊ณผ ๋ค๋ฅด๊ฒ ๋ผ์ธ๋ค๋ก ๋ถ๋ฆฌ X
๋ฌธ์์ด๋ก ๋ณํ X
ํน์ ํ๋ก๊ทธ๋จ์ ์ํด์๋ง ํ๋ ๊ฐ๋ฅ
Ex) C ํ๋ก๊ทธ๋จ ์คํํ์ผ, ์ฌ์ด๋ ํ์ผ, ์ด๋ฏธ์ง ํ์ผ
# ํ์ผ ์ฒ๋ฆฌ์ ๊ฐ์
ํ์ผ ์ด๊ธฐ ใ ก> ํ์ผ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ใ ก> ํ์ผ ๋ซ๊ธฐ
๋์คํฌ ํ์ผ์ FILE ๊ตฌ์กฐ์ฒด ์ด์ฉํด ์ ๊ทผ
FILE ๊ตฌ์กฐ์ฒด ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ํ์ผ ํฌ์ธํฐ(file pointer)๋ผ๊ณ ํจ
# ํ์ผ ์ด๊ธฐ
๋ชจ๋ | ์ค๋ช |
" r " | ์ฝ๊ธฐ ๋ชจ๋๋ก ํ์ผ ์ด๊ธฐ |
" w " | ์ฐ๊ธฐ ๋ชจ๋๋ก ํ์ผ ์์ฑ |
" a " | ์ถ๊ฐ ๋ชจ๋๋ก ํ์ผ ์ด๊ธฐ |
# ํ์ผ ์ด๊ธฐ ์์
· FILE *fp;
· fp = fopen("test.txt", "w");
์คํจ ์ NULL๋ก ๋ฐํ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
FILE* fp;
fp = fopen("test.txt", "w");
if (fp == NULL)
printf("file open error\n");
else
printf("file open success\n");
fclose(fp);
return 0;
}
# ํ ์คํธ ํ์ผ ์ฝ๊ณ ์ฐ๊ธฐ
ํ ๊ธ์์ฉ ์ฐ๊ธฐ
· int fputc (int char, FILE* stream);
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
FILE* fp;
fp = fopen("alphabet.txt", "w");
if (fp == NULL) {
fprintf(stderr, "file open error\n");
exit(1);
}
else
printf("file open success\n");
char c;
for (c = 'a'; c <= 'z'; c++)
fputc(c, fp);
fclose(fp);
return 0;
}
ํ ๊ธ์์ฉ ์ฝ๊ธฐ
· int fgetc(FILE* stream);
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
FILE* fp;
fp = fopen("alphabet.txt", "r");
if (fp == NULL) {
fprintf(stderr, "file open error\n");
exit(1);
}
else
printf("file open success\n");
char c;
while ((c = fgetc(fp)) != EOF)
putchar(c);
fclose(fp);
return 0;
}
*fgetc() ๋ฐํ๊ฐ์ด != EOF ์ธ์ง ๊ผญ ์ฒดํฌ*
ํ ์ค์ฉ ์ฐ๊ธฐ
· int fputs (const char* str, FILE* stream);
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void)
{
FILE* fp;
char str[100];
fp = fopen("file.txt", "w");
if (fp == NULL) {
fprintf(stderr, "ํ์ผ file.txt๋ฅผ ์ด ์ ์์ต๋๋ค.\n");
exit(1);
}
do {
gets(str); // ์ฌ์ฉ์๋ก๋ถํฐ ํ ์ค์ ์
๋ ฅ๋ฐ๋๋ค.
fputs(str, fp); // ์
๋ ฅ๋ฐ์ ํ ์ค์ ํ์ผ์ ์ด๋ค.
} while (strlen(str) != 0);
fclose(fp);
return 0;
}
ํ ์ค์ฉ ์ฝ๊ธฐ
· char* fgets (char* str, int num, FILE* stream);
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
FILE* fp;
char str[100];
fp = fopen("file.txt", "r");
if (fp == NULL) {
fprintf(stderr, "ํ์ผ์ ์ด ์ ์์ต๋๋ค.\n");
exit(1);
}
else {
if (fgets(str, 100, fp) != NULL)
puts(str);
fclose(fp);
}
return 0;
}
# Lab 1 ํ ์คํธ ํ์ผ ๋ณต์ฌ ํ๋ก๊ทธ๋จ
· if ((fp1 = fopen(file1, "r")) == NULL )
· if ((fp2 = fopen(file2, "w")) == NULL )
· while ((c = fgetc(fp1)) != EOF)
· fputc(c, fp2);
· fclose(fp1);
#Lab 2 ์ฑ์ ์ ํ์ผ์ ๊ธฐ๋กํ๊ธฐ
fp = fopen("scores.txt", "w");
fprintf(fp, "%d %s %f\n", number, name, score);
#Lab 3 ์ฑ์ ํ์ผ์ ์ฝ์ด์ ์ฑ์ ํ๊ท ๊ตฌํ๊ธฐ
if ((fp = fopen(“scores.txt", "r")) == NULL )
while (!feof(fp))
fscanf(fp, "%d %s %f", &number, name, &score);
total += score;
printf("ํ๊ท = %f\n", total/count);
# ์ด์ง ํ์ผ
- ํ ์คํธ ํ์ผ : ๋ชจ๋ ๋ฐ์ดํฐ ใ ก> ์์คํค ์ฝ๋ ๋ณํ ( 00110001 ใ ก> ' 1 ' )
- ์ด์ง ํ์ผ : ๋ฐ์ดํฐ ํํ ๋ฐฉ์ ๊ทธ๋๋ก ์ ์ฅ ( 00110001 )
ํ์ผ ๋ชจ๋ | ์ค๋ช |
" rb " | ์ฝ๊ธฐ + ์ด์ง ํ์ผ ๋ชจ๋ |
" wb " | ์ฐ๊ธฐ + ์ด์ง ํ์ผ ๋ชจ๋ |
" ab " | ์ถ๊ฐ + ์ด์ง ํ์ผ ๋ชจ๋ |
# ํ์ผ ํฌ์ธํฐ
64๋นํธ์ ๊ฐ์ผ๋ก ์ฝ๊ธฐ, ์ฐ๊ธฐ ๋์์ด ํ์ฌ ์ด๋ค ์์น์์ ์ด๋ฃจ์ด์ง๋์ง ๋ํ๋ธ๋ค.
- fseek(fp, 0L, SEEK_SET); // ํ์ผ์ ์ฒ์์ผ๋ก ์ด๋
- fseek(fp, 0L, SEEK_END); // ํ์ผ์ ๋์ผ๋ก ์ด๋
- fseek(fp, 100L, SEEK_SET); // ํ์ผ์ ์ฒ์์์ 100๋ฐ์ดํธ ์ด๋
- fseek(fp, 50L, SEEK_CUR); // ํ์ฌ ์์น์์ 50๋ฐ์ดํธ ์ด๋
- fseek(fp, -20L, SEEK_END); // ํ์ผ์ ๋์์ 20๋ฐ์ดํธ ์์ผ๋ก ์ด๋
# ์์ ์ ๊ทผ ๊ด๋ จ ํจ์
- void rewind(FILE *fp); // ํ์ผ ์์น ํ์์๋ฅผ 0์ผ๋ก ์ด๊ธฐํ
- long ftell(FILE *fp); // ํ์ผ ์์น ํ์์์ ํ์ฌ ์์น๋ฅผ ๋ฐํ
- ํ์ผ ์์น ํ์์๋ฅผ ์ด๊ธฐํํ๊ณ ํ์ฌ ์์น๋ฅผ ์์๋ด๋ ํจ์๋ค์ด๋ค.
'C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Cํ๋ก๊ทธ๋๋ฐ] 12์ฃผ์ฐจ. ๊ตฌ์กฐ์ฒด (0) | 2024.05.29 |
---|---|
[Cํ๋ก๊ทธ๋๋ฐ] 11์ฃผ์ฐจ. ๋ฌธ์์ด (0) | 2024.05.22 |
[Cํ๋ก๊ทธ๋๋ฐ] 10์ฃผ์ฐจ. ํฌ์ธํฐ (0) | 2024.05.08 |
[Cํ๋ก๊ทธ๋๋ฐ] 9์ฃผ์ฐจ. ํจ์ (0) | 2024.05.02 |