고수준 함수
에서 기본적인 프로그램을 작성하면
FILE
61 |
|
program을 작성하면
char ch;
fscanf([ ],”%c”,&ch); - ch = 0x61
fprintf([ ],”%c”,ch);
61 |
61 |
[고수준함수] fpintf()와 fwrite()의 차이
1)fprintf()
program
FILE *fp;
int iRet;
int iNum = 0x12345678;
fp = fopen(“a.txt”,”w”);
iRet = fprintf(fp, “%d”, iNum);
printf(“%d\n”,iRet);
flcose(fp);
프로그램을 실행해보면
iRet값으로 9가 나오는 것을 확인 할 수 있습니다
12345678이라면
78 56 34 12로 저장이된다면 4가 나와야 하지만 9가 나왔습니다
그래서 이 실행 파일을 hexaview로 실행하여 보겠습니다
305419896
즉 한바이트 ascii로 저장된것을 확인 할 수 있습니다
fprintf에서 한계는 최적화에 있어서 파일을 ascii형태로 1바이트당 저장을 하기 때문에 메모리의 낭비를 불러오게 됩니다
장점은 화면의 뿌려진 디스플레이 기반의 ascii를 하나씩 저장할수있습니다
그럼 반면에
2)fwrite()
program
FILE *fp;
int iRet;
int iNum = 0x12345678;
fp = fopen(“a.txt”,”w”);
iRet = fwrite(&iNum, 1,4,fp);
printf(“%d\n”,iRet);
flcose(fp);
위와 마찬가지로 hexaview로 돌려보았더니
1바이트에 2개씩 정수값이 들어가 있는 것을 확일 할 수 있습니다
최적화된 형태라고 볼수 있습니다
하지만 그렇다고 fwrite가 더 많이 쓰이고 fprint를 더 적게 쓰는 의미가 아니라 두함수는 각각의 장점이 단점이되고 단점이 곧 장점이 되는 함수입니다 적절하게 사용하면 될듯합니다
'Daily Report' 카테고리의 다른 글
110708 연결리스트 / 자기참조포인터 (0) | 2011.07.08 |
---|---|
110705 함수포인터 반환형 / 포인터형 변수선언 / 문제 (0) | 2011.07.05 |
110629 소켓통신의 흐름 / 소켓의 생성 및 해제 / memset (0) | 2011.06.30 |
110627 저수준 입출력(p11-9) / grep / redirection / TCP/IP 서론 (0) | 2011.06.27 |
110624 파일입출력(고수준 저수준) (0) | 2011.06.24 |