파일 입출력
- 파일열기 -
파일을 액세스하기 위해서는 우선 파일을 열어야한다. 밑은 파일을 열기 위한 함수의 원형이다.
FILE *fopen(const char *filename, const char *mode);
fopen의 첫번째 인자에는 파일이름을 두번째 인자에는 파일의 모드를 넣어준다.
사용 할 수 있는 파일 모드는 밑의 표와 같다.
모드 |
의미 |
r | 읽기위해서 텍스트모드로 파일을 연다 |
w | 쓰기위해서 텍스트모드로 파일을 연다 |
a | 텍스트 모드로 기존의 파일에 추가한다. |
rb | 읽기위해서 2진모드로 파일을 연다. |
wb | 쓰기위해서 2진모드로 파일을 연다. |
ab | 2진 모드로 기존의 파일에 추가한다. |
r+ | 읽기와 쓰기를 위해서 텍스트 모드로 파일을 연다. |
w+ |
읽기와 쓰기를 위해서 텍스트 모드로 파일을 생성한다. |
a+ |
읽기와 추가를 위해서 텍스트 모드로 파일을 연다. 파일이 존재하지 않으면 생성한다 |
<<예시 소스코드>>
#include<stdio.h>
int main()
{
FILE *fp;
char caArray[1000];
fp= fopen("A.txt","r");//fopen(열고싶은파일의 이름,모드)
fscanf(fp,"%s",caArray);//그냥 scanf에서 파일포인터만 추가해주면 된다.
printf("%s",caArray);
fclose(fp);//열어놓은 파일을 닫는다.
return 0;
}
<<결과화면>>
컴파일러는 함수원형인 "FILE *fopen(const char *filename, const char *mode);"와
"fp= fopen("A.txt","r");"의 갯수을 비교 한 뒤, 인자의 타입비교, 반환값일치 여부를 검사한다.
만약 열려고 하는 파일이 없다면 에러를 띄워야 할 것이다.
<<예시소스>>
#include<stdio.h>
int main()
{
FILE *f;
f=fopen("c:\\영화\\영구와땡칠이.avi","rb");
if (f == NULL)
{
printf("얼씨구. 파일이 안 보이네요\n");
}
else
{
fclose(f);
}
return 0;
}
<<결과화면>>
* 파일의 이름에서 \\를 두번쓰는 이유
\를 하나만 쓰면 개행문자라고 인식할 수 있어 구분하기 위해서 \\를 쓴다.
- Hexaview -
<<예제소스>>
#include<stdio.h>
void Hexaview(unsigned char *ucpData,unsigned int uiLen)
{
unsigned int uiCnt;
unsigned int ui16Cnt;
uiCnt=0;
printf("========================================\n");
printf("===============Hexa Viewer==============\n");
while(160>uiCnt)
{
printf("%p ",uiCnt);//헥사의 주소부분
ui16Cnt=0;
while(16>ui16Cnt)
{
printf("%02X ",*ucpData);//헥사값
ui16Cnt++;
ucpData++;
}
printf("\n");
uiCnt+=16;
}
}
int main()
{
unsigned char ucBuff[]="1234567890ABCDEF";
Hexaview(ucBuff,0);
return 0;
}
<<결과화면>>
(왼쪽부터)주소||Hexa값||아스키코드
아스키코드 첫번째 값을 매직넘버라고 하는데, 이 값을 통해 이 파일이 무슨 파일인지 알 수 있다.
- 용어정리 -
스트림 - 흐름 데이터 세트 간에서 데이터의 전송이 실행되고 있는 것으로, 문자 형식의 데이터 항목이 연속한 열로 되어 있는 것.
내부 버퍼 - 임시 저장 장소(변수는 내부 버퍼이다)
fp(file pointer) - 현재 읽고 있는 파일내의 위치
액세스 - 장치 A에서 장치 B에 대하여 정보를 송출할 때 A는 B에 액세스한다고 한다
드라이브 - 파티션으로 나눈 방들.
디렉토리 - 폴더
상대경로(<->절대경로) - 드라이브기준으로 움직이는 것(=절대경로C:W)
cd ..으로 움직이는 경로는 다 상대경로
CR - 줄의 제일 앞으로 이동시켜주는것
LF - 줄을 바꿔주는 것(\n)
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
20160308_장진웅_업무일지_그밖의기초학습 (4) | 2016.03.08 |
---|---|
20160308_양준우_업무일지_그밖의기초학습 (4) | 2016.03.08 |
20160308_최기영_업무일지 (2) | 2016.03.08 |
2016.03.07 이종찬 업무일지 (6) | 2016.03.08 |
20160307_박진한_업무일지_파일입출력 (4) | 2016.03.08 |
20160307- 송찬호-업무일지-파일 입출력 (2) | 2016.03.08 |
20160307_김가연_업무일지_while을 이용한 반복문 활용 (3) | 2016.03.08 |
20160307-허도경-업무일지-파일 입출력 (5) | 2016.03.08 |