본문으로 바로가기

[D+16] 파일 입출력 (2)

category 해킹&보안/C언어 2017. 3. 1. 20:18
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

3. 파일 입출력


3) 데이터 쓰기


fwrite

- 함수 원형 : fwrite(쓸 데이터 주소, 크기, 반복횟수, 대상 파일 정보)

- 여기서 반복횟수는 그 수만큼 쓰기를 반복하는게 아닌 크기×반복횟수의 크기만큼 쓴다는 뜻.

#include <stdio.h>

int main()
{
	FILE * f;
	f = fopen("a.txt", "w+");

	if (f)
	{
		fwrite("abcdefg", 7, 1, f);
		fclose(f);
	}
	return 0;
}


4) 데이터 읽기


▣ fread

- 함수원형 : int(성공한 작업횟수를 반환) fread(저장공간, 크기, 반복횟수, 대상 파일 정보)

- 성공한 작업횟수는 해당크기를 완전히 채운 한 싸이클을 하나라고 침.

- 즉 한번을 읽어올때 크기 보다 작은 수의 글자를 읽어오게 되면 0을 반환.


#include <stdio.h>
int main()
{
	FILE * f;
	char sz[50] = { 0 };
	f = fopen("a.txt", "r");

	if (f)
	{
		printf("%d\n",fread(sz, 50, 1, f));

		printf("sz : %s\n", sz);
		fclose(f);
	}
	return 0;
}

- a.txt의 내용은 7글자임. 그 결과 fread의 리턴값을 출력하면 50보다 작기때문에 0을 반환함.

- 이런 경우를 대비하여 대부분

fread(sz, 1, 10, f)  이런 식으로 1바이트씩 여러번을 반복하여 읽어오는게 더 좋다.


5) 그 외 파일처리 관련 함수


위의 fread, fwrite 함수는 문자열 처리함수가 아닌 파일 바이너리 data를 읽고 쓰는 함수임!!


단일문자 파일 입출력 함수

- one = fgetc(fin);    // 파일에서 읽어옴.

- fputc(one, fout);    // 파일에다 씀.


▣ 문자열 파일 입출력 함수

- fgets(buffer, sizeof(buffer), fin);    // 파일에서 읽어옴.

- fputs(buffer, fout);    // 파일에다 씀.


▣ 서식화된 파일 입출력 함수

- fscanf(fin, "%s", &buffer);    // 파일에서 읽어옴.

- fprintf(fout, "%s", buffer);    // 파일에다 씀.


☞ fgets, fputs, fscanf, fprintf는 앞서 봤던 함수들과 비슷하지만 stdin, stdout이 아닌 특정 파일에 읽고 쓰는 것이기 때문에

   직접 파일 포인터를 설정해줘야 함.







i2sec 대구지점 23기 수료생.

'해킹&보안 > C언어' 카테고리의 다른 글

[D+18] 파일 입출력 심화(스테가노그래피)  (2) 2017.03.06
[D+17] 함수  (0) 2017.03.02
[D+15] 파일 입출력 (1)  (0) 2017.02.27
[D+14] C언어 기초 (7)  (0) 2017.02.26
[D+13] C언어 기초 (6)  (0) 2017.02.23