fgets () 사용-가장 메모리 효율적인 방법

조던 데이비스

온라인을 둘러 보면 효율적인 메모리 할당 측면에서 fgets()문자 포인터 배열 (char * restrict s ) 과 관련된 확실한 답을 아직 찾지 못했습니다 .

개요: char *fgets(char *restrict s, int n, FILE *restrict stream);

상기 찾고 fgets()- 사양

이 스펙에 대한 나의 이해에서, 당신은 단순히 각 줄에 몇 개의 문자가 있는지 모르기 때문에 - 스펙에LINE_MAX 정의 된 매크로를 기반으로 할당해야합니다 .<limits.h>

실행 printf("LINE_MAX BYTES: %d\n", LINE_MAX);하면 결과는 2048입니다.

존재는, 선언 말했다 char *line[LINE_MAX]- 또는 - char *line[2048]나 비효율적으로 큰 것 같다, 그러나,이 그것을하는 최선의 방법이 될 수있다?

//프로그램

#include <stdio.h>                                                                                                  
#include <limits.h>                                                                                                 
int main(void){                                                                                                     
    char line[LINE_MAX];                                                                                   
    FILE *fp = fopen("file.txt", "r");                                                                          
    while(fgets(line, LINE_MAX + 1, fp)){                                                                           
        printf("%s", line);                                                                               
    }                                                                                                    
    fclose(fp);                                                                                                 
    return(0); 
}  

//FILE(file.txt)

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
세르게이 칼리니첸코

파일에 특별한 속성이없는 경우 LINE_MAX바이트를 할당 하는 것이 가장 좋은 방법입니다. 일부 메모리를 낭비하고있을 수 있지만 자동 메모리 할당은 대부분의 최신 아키텍처에서 많은 하드웨어 지원과 함께 공간이 "할당"되는 것보다 "예약"되기 때문에 정말 저렴합니다.

반면에 파일 형식으로 인해 행이 특정 길이를 초과 할 수 없다는 것을 알고 있다면 대신 * 를 제한으로 MY_LINE사용할 수 있습니다 .MY_LINE+2

char line[MY_LINE+2];

예를 들어, uuendode형식으로 파일을 읽는 프로그램 은 한 줄에 최대 62자가 필요하므로 다음을 정의 할 수 있습니다.

#define MY_LINE 62

* UNIX에 있다고 가정하면 '\n'및에 대한 공간이 필요 '\0'하므로 +2부분 이 필요합니다 . Windows를 사용하는 경우 추가 '\r'문자 를 수용하려면 +3을 누르십시오 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

모든 사용자가 사용하는 첫 번째 결제 수단을 얻는 가장 효율적인 방법

분류에서Dev

유사한 문장을 쿼리하는 효율적인 방법

분류에서Dev

AJAX를 사용하는 가장 효율적인 검색 방법?

분류에서Dev

toString () JAVA를 사용하는 가장 효율적인 방법

분류에서Dev

웹 사이트에서 비디오를 스트리밍하는 가장 비용 효율적인 방법

분류에서Dev

정수 목록을 저장하는 메모리 효율적인 방법

분류에서Dev

가장 효율적인 계산 방법으로 쿼리

분류에서Dev

보기를 알리는 가장 효율적인 방법 (WPF / C #)

분류에서Dev

객체를 해시 키로 사용하는 가장 효율적인 방법

분류에서Dev

대용량 ALAC 라이브러리를 MP3로 변환하는 가장 효율적인 방법

분류에서Dev

다른 테이블에 저장된 사용자 기본 설정을 쿼리하는 효율적인 방법

분류에서Dev

라즈베리 파이에 파이썬을 사용하여 센서로부터 데이터를 저장하는 가장 효율적인 방법

분류에서Dev

숫자 집합의 메모리 사용량을 최소화하는 효율적인 방법

분류에서Dev

Python을 사용하여 메모리 효율적인 방식으로 Pandas를 사용하여 데이터 처리

분류에서Dev

Matlab에 사전을 저장하는 가장 효율적인 방법

분류에서Dev

Numpy : 메모리 효율적인 방식으로 표준 기저 벡터 저장

분류에서Dev

Entity Framework를 사용하여 SQL에 많은 열이있는 모델을 추가하는 가장 효율적인 방법은 무엇입니까?

분류에서Dev

SQL-Alchemy 조인 쿼리-가장 효율적인 쿼리 방법

분류에서Dev

자바 : 메서드 인수를 변경하는 가장 효율적인 방법

분류에서Dev

Rails에서 많은 수의 사용자에게 메일을 보내는 가장 효율적인 방법은 무엇입니까?

분류에서Dev

사전 키를 사전으로 채우는 가장 효율적인 방법

분류에서Dev

가장 효율적인 메모리 관리 C #

분류에서Dev

가장 효율적인 메모리 관리 C #

분류에서Dev

Django : 관련 모델을 쿼리하여 중첩 된 사전을 만드는 가장 효율적인 방법은 무엇입니까?

분류에서Dev

무기한 증가 할 수있는 동적 목록 속성을 만드는 메모리 효율적인 방법

분류에서Dev

가장 효율적인 리소스 사용을 찾는 알고리즘

분류에서Dev

모든 행 간의 차이를 계산하는 가장 효율적인 방법

분류에서Dev

iOS 용 Sqlite에서 행을 복제하는 가장 효율적인 방법

분류에서Dev

하위 디렉토리 경로를 찾는 가장 효율적인 방법

Related 관련 기사

  1. 1

    모든 사용자가 사용하는 첫 번째 결제 수단을 얻는 가장 효율적인 방법

  2. 2

    유사한 문장을 쿼리하는 효율적인 방법

  3. 3

    AJAX를 사용하는 가장 효율적인 검색 방법?

  4. 4

    toString () JAVA를 사용하는 가장 효율적인 방법

  5. 5

    웹 사이트에서 비디오를 스트리밍하는 가장 비용 효율적인 방법

  6. 6

    정수 목록을 저장하는 메모리 효율적인 방법

  7. 7

    가장 효율적인 계산 방법으로 쿼리

  8. 8

    보기를 알리는 가장 효율적인 방법 (WPF / C #)

  9. 9

    객체를 해시 키로 사용하는 가장 효율적인 방법

  10. 10

    대용량 ALAC 라이브러리를 MP3로 변환하는 가장 효율적인 방법

  11. 11

    다른 테이블에 저장된 사용자 기본 설정을 쿼리하는 효율적인 방법

  12. 12

    라즈베리 파이에 파이썬을 사용하여 센서로부터 데이터를 저장하는 가장 효율적인 방법

  13. 13

    숫자 집합의 메모리 사용량을 최소화하는 효율적인 방법

  14. 14

    Python을 사용하여 메모리 효율적인 방식으로 Pandas를 사용하여 데이터 처리

  15. 15

    Matlab에 사전을 저장하는 가장 효율적인 방법

  16. 16

    Numpy : 메모리 효율적인 방식으로 표준 기저 벡터 저장

  17. 17

    Entity Framework를 사용하여 SQL에 많은 열이있는 모델을 추가하는 가장 효율적인 방법은 무엇입니까?

  18. 18

    SQL-Alchemy 조인 쿼리-가장 효율적인 쿼리 방법

  19. 19

    자바 : 메서드 인수를 변경하는 가장 효율적인 방법

  20. 20

    Rails에서 많은 수의 사용자에게 메일을 보내는 가장 효율적인 방법은 무엇입니까?

  21. 21

    사전 키를 사전으로 채우는 가장 효율적인 방법

  22. 22

    가장 효율적인 메모리 관리 C #

  23. 23

    가장 효율적인 메모리 관리 C #

  24. 24

    Django : 관련 모델을 쿼리하여 중첩 된 사전을 만드는 가장 효율적인 방법은 무엇입니까?

  25. 25

    무기한 증가 할 수있는 동적 목록 속성을 만드는 메모리 효율적인 방법

  26. 26

    가장 효율적인 리소스 사용을 찾는 알고리즘

  27. 27

    모든 행 간의 차이를 계산하는 가장 효율적인 방법

  28. 28

    iOS 용 Sqlite에서 행을 복제하는 가장 효율적인 방법

  29. 29

    하위 디렉토리 경로를 찾는 가장 효율적인 방법

뜨겁다태그

보관