2014-09-01 3 views
0

C를 사용하여 파일의 바이트 수를 계산하는 방법은 무엇입니까?C를 사용하여 파일의 바이트 수를 계산하는 방법은 무엇입니까?

아래 파일에 일부 코드 (데이터)가 들어 있다고 가정합니다. 단어 수 (wc) 프로그램은 지정된 파일의 정확한 바이트 수를 어떻게 계산합니까?

그래서 예를 들어 만약 우리가 다음 파일이 : 그 파일의 바이트 수를 셀 수있는 프로그램을 만드는 방법을 알고 싶습니다

#include<stdio.h> 

int main(void) { 
    printf("helloworld!"); 
} 

합니다. stat(2) 샘플에서 발췌으로 리눅스 단어 수 (화장실)

cat helloworld.cpp | wc -c 
64 
+0

stat() 및 패밀리를 살펴보십시오. – PurpleAlien

+4

'getchar()'함수 (매크로)는 표준 입력에서 바이트를 읽습니다. EOF를 얻기 전에 몇 번이나 호출 할 수 있는지 세어보고 표준 입력 스트림에 몇 바이트인지 알려줍니다. 좀 더 일반적인 버전의 코드는 작업을 수행하는'int byte_count (FILE * fp) '함수를 가질 것입니다. 매우 큰 파일 (2 GiB 이상)을 조심하십시오. 카운트의 반환 값으로'int'와 다른 타입이 필요할 수도 있습니다. 파일 이름을 알고 있다면 ['stat()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html)을 사용할 수 있습니다. –

답변

5

를 사용

이 파일에 대한 바이트 수는 64

또는
char filename[] = "helloworld.cpp"; 
struct stat sb; 

if (stat(filename, &sb) == -1) { 
    perror("stat"); 
} 
else { 
    printf("File size:    %lld bytes\n", 
      (long long) sb.st_size); 
} 

당신은 getc() 기능을 사용할 수 있습니다

int bytes; 
for(bytes = 0; getc(stdin) != EOF; ++bytes); 
printf("File size:    %d bytes\n",bytes);