ํ์ผ์ ์ฝ๊ณ ์ธ ๋๋ fputs(), fgets() ํจ์์ fprintf(), fscanf() ํจ์๋ฅผ ์ฌ์ฉ. ํ ์์ผ๋ก ์ด๋ฃจ์ด์ง
ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ๋๋ ๋จผ์ fopen() ํจ์๋ก ํ์ผ์ ์ด์ด์ ํ์ผ ํฌ์ธํฐ๋ฅผ ์ป์ด์ผ ํ๋ค. ํ์ผ ํฌ์ธํฐ๋ fopen() ํจ์๋ฅผ ํตํด ๋ฌด์จ ํ์ผ์ ์ด์๋์ง, ํ์ผ์ ์ด๋๊น์ง ์ฝ์๋์ง, ํ์ผ์ ๋์ ๋๋ฌํ๋์ง ๋ฑ์ ์ ๋ณด๋ฅผ ๋ด๋๋ค.
ํ์ผ ํฌ์ธํฐ๋ฅผ ์ป๋ ๋ฐฉ๋ฒ
FILE * ํฌ์ธํฐ๋ช = fopen(ํ์ผ๋ช , ํ์ผ๋ชจ๋);
ํ์ผ ๋ชจ๋ : r ์ฝ๊ธฐ ์ ์ฉ, w ์ฐ๊ธฐ ์ ์ฉ, a ์ด์ด ์ฐ๊ธฐ
์ฝ๊ธฐ, ์ฐ๊ธฐ ์ ์ฉ ๋ค์๋ t์ b๋ฅผ ๋ถ์ผ ์ ์๋๋ฐ, t๋ ํ ์คํธ๋ฅผ ์๋ฏธ, b๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธ
ํ ์คํธ = ์ฌ๋์ด ์ฝ์ ์ ์๋ ๋ฌธ์์ด, ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ = ์ปดํจํฐ๊ฐ ์ฝ์ ์ ์๋ 0๊ณผ 1๋ก ๋ ๋ฐ์ดํฐ
ํ์ผ ๋ชจ๋
ํ์ผ ๋ชจ๋ | ๊ธฐ๋ฅ | ์ค๋ช |
r | ์ฝ๊ธฐ ์ ์ฉ | ์ฝ๊ธฐ ์ ์ฉ ํ์ผ ์ด๊ธฐ ํ์ผ์ด ๋ฐ๋์ ์์ด์ผ ํจ |
w | ์ฐ๊ธฐ ์ ์ฉ | ์ ํ์ผ ์์ฑ ๊ธฐ์กด ํ์ผ์ด ์์ผ๋ฉด ๋ฎ์ด ์ |
a | ์ถ๊ฐ | ํ์ผ์ ์ด์ด ๊ธฐ์กด ํ์ผ ๋์ ์ด์ด ์ฐ๊ธฐ ํ์ผ์ด ์์ผ๋ฉด ์๋ก ์์ฑํจ |
r+ | ์ฝ๊ธฐ/์ฐ๊ธฐ | ์ฝ๊ธฐ/์ฐ๊ธฐ์ฉ์ผ๋ก ํ์ผ ์ด๊ธฐ ํ์ผ์ด ๋ฐ๋์ ์์ด์ผ ํ๊ณ , ์์ผ๋ฉด NULL์ ๋ฐํํจ |
w+ | ์ฝ๊ธฐ/์ฐ๊ธฐ | ์ฝ๊ธฐ/์ฐ๊ธฐ์ฉ์ผ๋ก ํ์ผ ์ด๊ธฐ ํ์ผ์ด ์์ผ๋ฉด ์๋ก ์์ฑํ๊ณ , ์์ผ๋ฉด ๋ฎ์ด ์ |
a+ | ์ถ๊ฐ(์ฝ๊ธฐ/์ฐ๊ธฐ) | ํ์ผ์ ์ด์ด ๊ธฐ์กด ํ์ผ ๋์ ์ด์ด์ฐ๊ธฐ ํ์ผ์ด ์์ผ๋ฉด ์๋ก ์์ฑํจ ์ฝ๊ธฐ๋ ํ์ผ์ ๋ชจ๋ ๊ตฌ๊ฐ์์, ์ฐ๊ธฐ๋ ํ์ผ ๋์์๋ง ๊ฐ๋ฅํจ |
t | ํ ์คํธ ๋ชจ๋ | ํ์ผ์ ์ฝ๊ณ ์ธ ๋ ์ค๋ฐ๊ฟ ๋ฌธ์ \n๊ณผ \r\n์ ์๋ก ๋ณํํจ ^Z(Ctrl + z)๋ฅผ ํ์ผ ๋์ผ๋ก ์ธ์ํ๋ฏ๋ก ^Z๊น์ง๋ง ํ์ผ์ ์ฝ์ |
b | ๋ฐ์ด๋๋ฆฌ ๋ชจ๋ | ํ์ผ ๋ด์ฉ์ ๊ทธ๋๋ก ์ฝ๊ณ ์ |
fputs() ํจ์
ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด ๋จ์๋ก ์ ์ฅํ๋ค. fputs() ํจ์์ ์ฒซ ๋ฒ์งธ ์ ๋ฌ๊ฐ์๋ ํ์ผ์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋ฌธ์์ด๋ก ์ ๊ณ , ๋ ๋ฒ์งธ ์ ๋ฌ๊ฐ์๋ ํ์ผ ํฌ์ธํฐ๋ฅผ ๋ฃ๋๋ค.
fputs(๋ฌธ์์ด, ํ์ผํฌ์ธํฐ)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
FILE* file = fopen("E:\\programming\\C\\test1.txt", "wb");
if (file == NULL) {
printf("ํ์ผ ์ด๊ธฐ ์คํจ\n");
return 1;
}
fputs("fputs() ํจ์๋ก ๊ธ์ ์จ ๋ณผ๊ฒ์.\n", file);
fputs("์ ์จ์ง๋์ง ํ์ธํด ์ฃผ์ธ์.\n", file);
fclose(file);
return 0;
}
#define
#define ๋งคํฌ๋ก ๋์ฒด์์(๋๋ ํํ์)
๋งคํฌ๋ก๋ฅผ ์ ์ํ๋ ์ ์ฒ๋ฆฌ๊ธฐ ์ง์๋ฌธ. ๋งคํฌ๋ก๋ ์์ค ์ฝ๋ ์์์ ๊ฐ์ ๋์ฒดํด ์ฌ์ฉํ๋ ๋ฌธ์์ด์ ์๋ฏธํ๋ค.
๋งคํฌ๋ก๋ ์ฝ๋์ ์ง์ ์ ์ํ ์๋ ์๊ณ C ์ธ์ด์ ๋ด์ฅ๋ ๋งคํฌ๋ก๋ฅผ ๋ถ๋ฌ์ ์ ์ํ ์๋ ์๋ค.
์ฌ๊ธฐ์ ์ฌ์ฉํ _CRT_SECURE_NO_WARNINGS๋ ๋ด์ฅ ๋งคํฌ๋ก๋ก, ๋ณด์ ๊ฒฝ๊ณ ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํ๋ค.
define์ ์ด์ฉํ๋ฉด ์ ์ฒด ์์ค ์ฝ๋ ๋ด ๋งคํฌ๋ก๋ฅผ ์ผ๊ด์ ์ผ๋ก ๋์ฒด์์๋ก ์นํํ๊ฒ ๋๋ฏ๋ก ํ์ ์ ๋์ฒด์์์ ๊ฐ์ ํ ๋ฒ๋ง ๋ณ๊ฒฝํ๋ฉด ๋ชจ๋ ๊ณณ์ ์์ฝ๊ฒ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ ์ ์๋ค. ๋ํ, ์ ์ฒ๋ฆฌ๊ธฐ์ ์ํด ๋จ์ํ ์นํ๋๋ ๋ฐฉ์์ด๋ผ์ ์คํ ์๋๊ฐ ํฅ์๋๋ค. ๊ทธ๋์ ์์ ์ ๊ฐ์ด ๊ฐ๋จํ ์ฐ์ฐ์ ํ๋ ํจ์๊ฐ ํ์ํ๋ฉด ๋งคํฌ๋ก ํจ์์ ์ฌ์ฉ์ ๊ณ ๋ คํด ๋ณผ ์ ์๋ค.
์)
#include <stdio.h>
#define ADD(x1, x2) (x1+x2)
int main(void){
int result = ADD(10, 20); // (10 + 20)
printf("%d\n", result); // 30
return 0;
}
fclose() ํจ์
ํ์ผ์ ๋ด์ฉ์ ๋ค ์ฐ๊ณ ํ์ผ์ ๋ซ์์ผ ํ๋ค. fclose() ํจ์๋ฅผ ํธ์ถํ ๋ ์ ๋ฌ๊ฐ์ผ๋ก ํ์ผ ํฌ์ธํฐ๋ฅผ ๋ฃ์ผ๋ฉด ํ์ผ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ํ์ผ์ ์ ์ฅํ๊ณ ๋ซ๋๋ค. ๋ง์ฝ ํ์ผ์ ์ฐ ํ ๋ซ์ง ์์ ์ํ์์ ํ๋ก๊ทธ๋จ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ฐ์ดํฐ ์์ค์ด ์๊ธธ ์ ์๋ค. ๋ฐ๋ผ์ fopen() ํจ์๋ก ํ์ผ์ ์ด์๋ค๋ฉด ๋ฐ๋์ fclose() ํจ์๋ก ๋ซ๋ ์ต๊ด์ ๋ค์ฌ์ผ ํ๋ค.
fclose(ํ์ผํฌ์ธํฐ);
fgets() ํจ์๋ก ํ์ผ ์ฝ๊ธฐ
fgets(๋ณ์๋ช , ๋ฌธ์์ด ์ต๋ํฌ๊ธฐ, ํ์ผํฌ์ธํฐ)
#define _CRT_SECURE_NO_WARNINGS
#define MAX 10000
#include <stdio.h>
int main(void) {
char line[MAX]; // char line[10000]; // ํ์ผ์์ ์ฝ์ด ์ค๋ ๋ฌธ์์ด ์ ์ฅ ๋ฐฐ์ด ์ ์ธ
FILE* file = fopen("E:\\programming\\C\\test1.txt", "rb"); // wb -> rb
if (file == NULL) {
printf("ํ์ผ ์ด๊ธฐ ์คํจ\n");
return 1;
}
while (fgets(line, MAX, file) != NULL) { // fgets() ํจ์๋ก ํ์ผ ์ฝ๊ธฐ
printf("%s", line); // ์ฝ์ด ์ฌ ๋ฌธ์์ด ์ถ๋ ฅ
}
fclose(file); // ํ์ผ ๋ซ๊ธฐ
return 0;
}
fgets() ํจ์๋ ํ์ผ์ ์ ์ฅ๋ ๋ด์ฉ์ ๋ฌธ์์ด ๋จ์๋ก ์ฝ๋๋ค. ์ด ๋ ํ์ผ์ ์๋ ์ค๋ฐ๊ฟ ๋ฌธ์๋ ๋ฌธ์์ด์ ํฌํจํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ ๋ฒ ์ฝ์ ๋ ์ค ๋จ์๋ก ์ฝ๋ ๊ฒ์ด ์๋๋ผ ํ ๋ฒ์ ์ฝ์ ์ ์๋ ๋ฌธ์์ด์ ๊ธธ์ด๋งํผ ์ฝ๋๋ค. ์ด๊ฒ์ด ๋ ๋ฒ์งธ ์ ๋ฌ๊ฐ์ธ ๋ฌธ์์ด์ ์ต๋ ํฌ๊ธฐ์ด๋ค. ์๋ ์ฝ๋์์ MAX๋ก ์ค์ ํ์ผ๋ฏ๋ก MAX ํฌ๊ธฐ๋งํผ ์ฝ์ด ์จ๋ค.
ํ์ง๋ง, ๋ฌธ์์ด์ ๋์ ๋ํ๋ด๊ธฐ ์ํด ๋ง์ง๋ง์ ๋ ๋ฌธ์๋ฅผ ํฌํจํด์ผ ํ๋ค. ๊ทธ๋์ fgets() ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ค๋ฐ๊ฟ ๋ฌธ์๋ฅผ ์ฝ์ผ๋ฉด ์ฝ๊ธฐ๋ฅผ ์ค๋จํ๋ค. MAX ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ ๋ฌธ์์ด์ด ์ ๋ ฅ๋๋ฉด MAX-1๊น์ง์ ๋ฌธ์์ด๋ง ์ ๋ ฅ๋ฐ๊ณ , ๋ง์ง๋ง์ ๋์ ์ถ๊ฐํด ํ์ฌ๊น์ง ์ฝ์ ๋ฌธ์์ด์ ์ ์ฅํ๋ค.
fputs(), fgets() : ๋ฌธ์์ด ๋จ์๋ก ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ฝ์ ๋ ์ฌ์ฉ
fprintf(), fscanf() : ์ ํด์ง ํ์์ผ๋ก ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ฝ์ ๋ ์ฌ์ฉ
fprintf(), fscanf() ํจ์
printf(), scanf() ํจ์์ ๊ฐ์ด ์์ ์์์ง์ ์ ์ฌ์ฉ.
fprintf() : ํ์ผ์ ๋ฐ์ดํฐ ์ ์ฅ
fprintf(ํ์ผํฌ์ธํฐ, "์์์ง์ ์", ๊ฐ);
fscanf() : ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ผ์ด์จ๋ค.
fscanf(ํ์ผํฌ์ธํฐ, "์์์ง์ ์", &๋ณ์๋ช );
#define _CRT_SECURE_NO_WARNINGS
#define MAX 10000
#include <stdio.h>
int main(void) {
char str1[MAX];
char str2[MAX];
int num[6] = { 0, 0, 0, 0, 0, 0 };
int bonus = 0;
FILE * file = fopen("E:\\programming\\C\\test2.txt", "rb");
if (file == NULL) {
printf("ํ์ผ ์ด๊ธฐ ์คํจ\n");
return 1;
}
fscanf(file, "%s %d %d %d %d %d %d", str1, &num[0], &num[1], &num[2], &num[3], &num[4], &num[5]);
printf("%s %d %d %d %d %d %d\n", str1, num[0], num[1], num[2], num[3], num[4], num[5]);
fscanf(file, "%s %d", str2, &bonus);
printf("%s %d\n", str2, bonus);
fclose(file);
return 0;
}
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ญ C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C] ๊ตฌ์กฐ์ฒด | typedef (1) | 2024.01.01 |
---|---|
[C] ๋ค์ฐจ์ ๋ฐฐ์ด (0) | 2023.12.31 |
[C] ํฌ์ธํฐ | ๊ฐ์ ์ํ ํธ์ถ | ์ฐธ์กฐ์ ์ํ ํธ์ถ | clock() | ํ์ ํํฌ (0) | 2023.10.12 |
[C] ๋ฐฐ์ด | null | sizeof() | ์์คํค์ฝ๋ (0) | 2023.09.10 |
[C] ํจ์ (0) | 2023.09.10 |