fopen 의 리턴값이나
std::ifstream 의 인스턴스를 가지고
파일크기를 구하는 방법이 있나요?
아니면 php 의 filesize(string filename) 와 비슷한 함수라도요..
WinAPI만 사용하다보니 이쪽으론 생각해 본적이 없어서 ==
$ man 2 stat
해보시면 도움이 되실것 같습니다.
-- "The love you take is equal to the love you make." The End, by Beatles
방법은 많이 있습니다. "test.c"는 길이를 알고자 하는 파일명이 되겠습니다.
#include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <errno.h> int main() { struct stat buf; int ret; ret = stat("test.c", &buf); if ( ret != 0 ) { perror("stat()"); exit(errno); } printf("len = %ld\n", buf.st_size); return 0; }
#include <stdio.h> int main() { FILE *fp; fp = fopen("test.c", "r"); fseek(fp, 0L, SEEK_END); printf("%ld \n", ftell(fp)); return 0; }
음 두번째에서 fclose(fp)가 빠졌네요. --;
C++에서는
ifstream fin("myFile", ios_base::in | ios_base::binary); fin.seekg(0, ios_base::end); istream::pos_type pt = fin.tellg();
fp = fopen("test.c", "r");
에서 unix 에서 "r" == "rb"이고 b는 의미가 없습니다(don't care condition). unix는 무조건 바이너리 모드로 파일을 열기 때문입니다. 그러나, win32/DOS등 과의 호환을 위해 "rb"로 쓰는게 좋겠습니다.
stat함수를 이용하는 방법과,
파일포인터를 끝으로 이동한다음
현재 파일포인터의 위치를 가져오는 방법을 쓰는군요..
많은 도움 되었습니다
답변 주신 분들 모두 감사합니다~
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
[code:1]$ man 2 stat[/code:1]해보시면 도움
$ man 2 stat
해보시면 도움이 되실것 같습니다.
--
"The love you take is equal to the love you make." The End, by Beatles
방법은 많이 있습니다."test.c"는 길이를 알고자 하는 파일명이
방법은 많이 있습니다.
"test.c"는 길이를 알고자 하는 파일명이 되겠습니다.
음 두번째에서 fclose(fp)가 빠졌네요. --;
음 두번째에서 fclose(fp)가 빠졌네요. --;
C++에서는[code:1]ifstream fin("m
C++에서는
위에 손님이 올리신 코드에서도 이진 모드로 파일을 열어야 하겠네요.
fp = fopen("test.c", "r"); 에서unix
fp = fopen("test.c", "r");
에서
unix 에서 "r" == "rb"이고 b는 의미가 없습니다(don't care condition).
unix는 무조건 바이너리 모드로 파일을 열기 때문입니다.
그러나, win32/DOS등 과의 호환을 위해 "rb"로 쓰는게 좋겠습니다.
아아 그럼..
stat함수를 이용하는 방법과,
파일포인터를 끝으로 이동한다음
현재 파일포인터의 위치를 가져오는 방법을 쓰는군요..
많은 도움 되었습니다
답변 주신 분들 모두 감사합니다~
댓글 달기