์ด ๊ธ์ Boostcourse ๋ชจ๋๋ฅผ ์ํ ์ปดํจํฐ ๊ณผํ์ ์๊ฐํ๊ณ ์์ฑ๋์์ต๋๋ค.
scanf
ํจ์
scanf
ํจ์๋ ์ฌ์ฉ์๋ก๋ถํฐ ํ์์ง์ ์์ ํด๋นํ๋ ๊ฐ์ ์ ๋ ฅ๋ฐ์ ์ ์ฅํ๋ค.
scanf("ํ์์ง์ ์", ์
๋ ฅ๊ฐ์ ์ ์ฅ ํ ๋ณ์์ ์ฃผ์)
์ ๊ฐ์ด ๋ ๊ฐ์ ์ธ์๋ก ๋ฐ๋๋ค.
์ฌ์ฉ์๋ก๋ถํฐ char 5๊ฐ์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ์ถ๋ ฅํ๋ ์ฝ๋๋ ์๋์ ๊ฐ์ด ์์ฑํ๋ค.
#include <stdio.h>
int main(void)
{
char s[5];
printf("s:");
scanf("%s", s); //clang์ ๋ฌธ์๋ฐฐ์ด์ ์ด๋ฆ์ ํฌ์ธํฐ์ฒ๋ผ ๋ค๋ฃธ
printf("s: %s", s);
}
fopen
, fclose
ํจ์
fopen
ํจ์๋ ํ์ผ์ ๋ถ๋ฌ๋ค์ฌ์ ๋ค์ํ ์ ์ถ๋ ฅ ๋ชจ๋๋ฅผ ์คํํ๋ค.
์์ ์ด ๋๋ฌ์ผ๋ฉดfclose
ํจ์๋ก ํ์ผ์ ๋ซ์์ค๋ค.
fopen(filename,"mode")
์ด๊ณ ์ ํ๋ ํ์ผ์ ์ด๋ฆ๊ณผ ๋ชจ๋(r, w, a)๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค. fopen
ํจ์๋ ํด๋น ํ์ผ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ๋ฆฌํดํ๋ค.
- r : read, ํ์ผ์ ์ฝ๊ธฐ ํ์์ผ๋ก ์ฐ๋ค.
- w : write, ํ์ผ์ ์ฐ๊ธฐ ํ์์ผ๋ก ์ฐ๋ค. ๋ง์ผ ๋์ผํ ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด, ๊ธฐ์กด ํ์ผ์ ๋ด์ฉ์ ๋ชจ๋ ์ง์ฐ๊ณ ๋น ์ํ์ผ๋ก ๊ฐ์ฃผํ๋ค. ๋ง์ผ ํ์ผ์ด ์๋ค๋ฉด ๋น ํ์ผ์ ์๋ก ์์ฑํ๋ค.
- a : append, ํ์ผ์ ๋ง๋ถ์ด๊ธฐ ํ์์ผ๋ก ์ฐ๋ค. ๋ง์ผ ๋์ผํ ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ๋ฉด, ์์ฑํ ๋ฐ์ดํฐ๋ ๊ธฐ์กด ๋ฐ์ดํฐ๋์ ๋ง๋ถ์ฌ์ง๋ค. ๋ง์ผ ํ์ผ์ด ์๋ค๋ฉด ์ ํ์ผ์ ์์ฑํ๋ค.
JPEG, PNG, MP4๋ฑ ๋ค์ํ ํ์์ ํ์ผ์ ๊ฐ๊ฐ ๊ณ ์ ํ ํฌ๋งท์ ๊ฐ์ง๊ณ ์๋ค. ํ์ผ ์๊ทธ๋์ฒ(File Signature)๋ ํ์ผ ํฌ๋งท์ ๊ธฐ๋ณธ์ด ๋๋ ๋ด์ฉ์ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ๋ชจ๋ JPEGํ์ผ์ 0xFF, 0xD8, 0xFF ๋ก ์์ํ๋ค.
ํ์ผ์ ์์๋ถ๋ถ์ ์กด์ฌํ๋ ์๊ทธ๋์ฒ๋ header signature, ํ์ผ์ ๋๋ถ๋ถ์ ์กด์ฌํ๋ ์๊ทธ๋์ฒ๋ Footer signature๋ผ ๋ถ๋ฅธ๋ค.
ํ์ผ ์๊ทธ๋์ฒ๋ ํ์ผ์ ํฌ๋งท์ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
ํ์ผ ์๊ทธ๋์ฒ์ ๋ํ ์์ธํ ์ค๋ช
๊ณผ ๋ค์ํ ํ์ผ์ ์๊ทธ๋์ฒ๋ ์๋ ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์๋ค.
http://forensic-proof.com/archives/300
fread
ํจ์
fread
ํจ์๋ ํ์ผ ์คํธ๋ฆผ์์ ์ํ๋ ๋ฐ์ดํธ๋งํผ, ์ํ๋ ํ์๋งํผ ์ฝ์ด ๋ฐฐ์ด(๋ฒํผ)์ ์ ์ฅํ๋ค.
fread(์ ์ฅํ ๋ฒํผ์ ์ฃผ์, ์ฝ์ ๋ฐ์ดํธ ์, ์ฝ์ ํ์, ์ฝ์ ํ์ผ)
๊ณผ ๊ฐ์ ์ธ์๋ฅผ ๋ฐ๋๋ค.
ํ์ผ์๊ทธ๋์ฒ์ fread
ํจ์๋ฅผ ํ์ฉํ์ฌ ํ์ผ์ ๋ด์ฉ์ ์ฝ์ด ํ์ผ์ ํ์์ด 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); // ํ์ผ์ ์ฒซ 3๋ฐ์ดํธ๋ฅผ bytes์ ์ ์ฅํ๋ค
if (bytes[0] == 0xff && bytes[1] == 0xd8 && bytes[2] == 0xff)
{
printf("Maybe\n");
}
else
{
printf("No\n");
}
fclose(file);
}