-
[메모리] 파일 읽기Stage/Computer Science 2021. 6. 1. 11:33
학습 목표
파일을 읽고 JPEG 파일인지를 검사하는 프로그램을 작성할 수 있다.
1. 파일 읽기
파일의 내용을 읽어서 파일 형식이 JPEG 이미지인지 검사하는 프로그램을 만들어보자.
#include <stdio.h> int main(int argc, char *argv[]) { if (argc != 2) { return 1; } FILE *file = fopen(argv[1], "r"); if (file == NULL) { return 1; } unsigned char bytes[3]; fread(bytes, 3, 1, file); if (bytes[0] == 0xff && bytes[1] == 0xd8 && bytes[2] == 0xff) { printf("Maybe\n"); } else { printf("No\n"); } fclose(file); }
- main 함수를 보면 void가 아닌 사용자로부터 입력 받는 값이 있다는 것을 알 수 있다.
- argc가 2라고 가정하고 코드를 진행해보자.
입력받은 파일명 argv[1]을 읽기모드로 불러온다. - 파일이 열렸다면
fread(bytes, 3, 1, file);
함수를 실행하는데, fread(배열, 읽을 바이트 수, 읽을 횟수, 읽을 파일)을 의미한다. - 읽어들인 각 바이트가 0xFF, 0xD8, 0xFF 인지를 확인하는데, 이는 개발자가 JPEG 형식의 파일을 정의할 때 만든 약속(
파일 시그니처
)이므로, JPEG 파일의 시작점에 포함되어 있어야 한다.
'Stage > Computer Science' 카테고리의 다른 글
[자료구조] 배열의 크기 조정 (0) 2021.06.01 [자료구조] malloc과 포인터 복습 (0) 2021.06.01 [메모리] 파일 쓰기 (0) 2021.06.01 [메모리] 메모리 교환, 스택, 힙 (0) 2021.06.01 [메모리] 메모리 할당과 해제 (0) 2021.05.31