fread를 사용하여 파일에서 구조체로 데이터 읽기

Grzegorz Szeremeta

나는 코드의 일부를 쓰고 있는데 그 일부는 파일에서 n- 길이 배열로 "레코드"를 읽고 있는데, n은 인수로 주어집니다. 파일의 레코드는 일정한 길이 (이 경우 1024)를 가지며 숫자, 공백 및 소문자 만 포함합니다. 각 레코드는 \ n으로 종료됩니다. 하나의 레코드를 유지하기 위해 다음 구조를 사용하고 있습니다.

typedef struct{
char rec[1024];
} record;

그리고 그 중 n 개를 추출하고 n 길이의 레코드 배열에 저장하는 코드는 다음과 같이 작성됩니다.

record * recs=malloc(n*sizeof(record));
size_t read=fread(recs,sizeof(record),(size_t)n,f);

이 작업의 출력을 확인했을 때 배열 recs의 첫 번째 요소에는 모든 레코드가 포함되어 있고 두 번째는 배열의 각 요소에 하나씩 유지하는 대신 첫 번째를 제외한 모든 레코드를 포함하는 것으로 나타났습니다. 나는 각 레코드를 배열의 다른 요소에 저장해야한다고 생각했기 때문에 일종의 길을 잃었습니다. 제안 된대로 파일을 열고 배열 요소를 인쇄하기위한 코드도 제공하고 있습니다.

if((f=fopen(argv[2],"r"))==NULL){
        perror("error opening file\n");
        exit(1);
    }

for(int i=0;i<(int)read;i++){
        printf("record number %d\n %s\n",i,recs[i].rec);
    }
4386427

문제는 레코드 rec가 0으로 끝나는 문자열이 아니라는 것입니다.

따라서를 사용하여 인쇄하면 %s모든 레코드가 표시됩니다 '\0'..

따라서 각각에 제로 터미네이션을 추가 rec하거나 이외의 다른 인쇄 방법을 사용하십시오 %s.

BTW : 내부에 제로 터미네이션이 없으면 recs실제로 정의되지 않은 동작이 있습니다.

이 작은 프로그램은 문제를 모방합니다.

#include <stdio.h>

struct r {
    char c[1];
};

int main(void) {
    int i;
    struct r recs[4] = {{'a'}, {'b'}, {'c'}, {'\0'}};
                                      //       ^^^^^
                                      //       Just to stop printing here
    for (i=0; i<3; i++)
    {
        printf("%d %s\n", i, recs[i].c);
    }

    return 0;
}

산출:

0 abc
1 bc
2 c

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파일에서 읽고 포인터를 사용하여 데이터를 동적 구조체에 넣습니다.

분류에서Dev

fread () 함수를 사용하여 파일의 데이터 블록 읽기

분류에서Dev

ifstream을 사용하여 이진 데이터를 구조체로 읽기

분류에서Dev

XML 파일에서 JAVA를 사용하여 데이터 읽기

분류에서Dev

C 프로그래밍에서 구조체의 이중 포인터를 사용하여 텍스트 파일에서 2D 배열로 행렬 읽기

분류에서Dev

write / fread를 사용하여 구조 배열에 데이터를 쓰고 / 읽는 방법은 무엇입니까?

분류에서Dev

파일에서 읽은 데이터를 사용하여 객체 벡터 채우기

분류에서Dev

pySpark를 사용하여 hdfs에서 데이터 프레임으로 파트 파일 읽기

분류에서Dev

C에서 fread를 사용하여 파일 읽기

분류에서Dev

파일에서 읽은 구조체의 데이터를 인쇄하는 방법

분류에서Dev

데이터 배열 구조에서 특정 구조를 검색하고 fread를 사용하여 읽는 방법은 무엇입니까?

분류에서Dev

CRTP를 사용하여 파일에서 구조 읽기

분류에서Dev

파일에서 C의 구조체로 데이터 읽기

분류에서Dev

파일에서 구조체로 데이터 읽기

분류에서Dev

fread ()를 사용하여 바이너리 파일에서 읽기는 추가 문자를 표시합니다.

분류에서Dev

asp net mvc를 사용하여 csv 파일에서 데이터 읽기

분류에서Dev

ajax를 사용하여 .js 파일에서 .php로 데이터 보내기

분류에서Dev

Javascript를 사용하여 JSON 파일에서 HTML로 데이터 가져 오기

분류에서Dev

PHP를 사용하여 공백으로 구분 된 .txt 파일에서 데이터를 읽는 방법

분류에서Dev

pyodbc를 사용하여 SQL Server에서 Pandas로 데이터 읽기

분류에서Dev

Ajax를 사용하여 PHP로 텍스트 파일에서 읽은 페이지의 데이터 업데이트

분류에서Dev

pandas 데이터 프레임으로 파일 읽기 (soh를 사용하여 데이터 분할)

분류에서Dev

PHP를 사용하여 데이터베이스에서 CSV 파일로 데이터 내보내기

분류에서Dev

'읽기'를 사용하여 파일에서 연결된 목록으로 데이터를 읽는 (C) 함수를 어떻게 만들 수 있습니까?

분류에서Dev

C # 데이터 세트를 사용하여 xml 파일 읽기

분류에서Dev

axios를 사용하여 로컬 JSON 파일에서 데이터 가져 오기 및 데이터 표시

분류에서Dev

P / Invoke를 사용하여 MFC DLL 함수에서 VB.NET의 구조화 된 데이터 읽기

분류에서Dev

C # COM 개체에서 C ++로 데이터를 전달하기 위해 C # 구조체 사용

분류에서Dev

메모리를 동적으로 할당하면서 파일 데이터를 구조 배열로 읽기

Related 관련 기사

  1. 1

    파일에서 읽고 포인터를 사용하여 데이터를 동적 구조체에 넣습니다.

  2. 2

    fread () 함수를 사용하여 파일의 데이터 블록 읽기

  3. 3

    ifstream을 사용하여 이진 데이터를 구조체로 읽기

  4. 4

    XML 파일에서 JAVA를 사용하여 데이터 읽기

  5. 5

    C 프로그래밍에서 구조체의 이중 포인터를 사용하여 텍스트 파일에서 2D 배열로 행렬 읽기

  6. 6

    write / fread를 사용하여 구조 배열에 데이터를 쓰고 / 읽는 방법은 무엇입니까?

  7. 7

    파일에서 읽은 데이터를 사용하여 객체 벡터 채우기

  8. 8

    pySpark를 사용하여 hdfs에서 데이터 프레임으로 파트 파일 읽기

  9. 9

    C에서 fread를 사용하여 파일 읽기

  10. 10

    파일에서 읽은 구조체의 데이터를 인쇄하는 방법

  11. 11

    데이터 배열 구조에서 특정 구조를 검색하고 fread를 사용하여 읽는 방법은 무엇입니까?

  12. 12

    CRTP를 사용하여 파일에서 구조 읽기

  13. 13

    파일에서 C의 구조체로 데이터 읽기

  14. 14

    파일에서 구조체로 데이터 읽기

  15. 15

    fread ()를 사용하여 바이너리 파일에서 읽기는 추가 문자를 표시합니다.

  16. 16

    asp net mvc를 사용하여 csv 파일에서 데이터 읽기

  17. 17

    ajax를 사용하여 .js 파일에서 .php로 데이터 보내기

  18. 18

    Javascript를 사용하여 JSON 파일에서 HTML로 데이터 가져 오기

  19. 19

    PHP를 사용하여 공백으로 구분 된 .txt 파일에서 데이터를 읽는 방법

  20. 20

    pyodbc를 사용하여 SQL Server에서 Pandas로 데이터 읽기

  21. 21

    Ajax를 사용하여 PHP로 텍스트 파일에서 읽은 페이지의 데이터 업데이트

  22. 22

    pandas 데이터 프레임으로 파일 읽기 (soh를 사용하여 데이터 분할)

  23. 23

    PHP를 사용하여 데이터베이스에서 CSV 파일로 데이터 내보내기

  24. 24

    '읽기'를 사용하여 파일에서 연결된 목록으로 데이터를 읽는 (C) 함수를 어떻게 만들 수 있습니까?

  25. 25

    C # 데이터 세트를 사용하여 xml 파일 읽기

  26. 26

    axios를 사용하여 로컬 JSON 파일에서 데이터 가져 오기 및 데이터 표시

  27. 27

    P / Invoke를 사용하여 MFC DLL 함수에서 VB.NET의 구조화 된 데이터 읽기

  28. 28

    C # COM 개체에서 C ++로 데이터를 전달하기 위해 C # 구조체 사용

  29. 29

    메모리를 동적으로 할당하면서 파일 데이터를 구조 배열로 읽기

뜨겁다태그

보관