오키도키
80
2016-09-02 22:35:33
4
4480

C로 파일 읽어서 2차원 배열 저장하기



 160908 서울시xxxxx ....

 160905 서울시yyyy ....

    .....


 위와 같은 형태로 작성된 (.txt)파일이 있습니다. 

 이 파일의 내용을 한줄씩 프로그램 내에 집어 넣어 사용하려고 2차원 char 배열에다 넣어주려고 했는데,

 fgets로 파일을 한줄씩 읽어올 때 그 읽어온 내용이 2차원 배열의 사이즈만 충분하면 배열에 저장될 수 있는지, 다른 문제는 없을지 궁금합니다. 제 구상으로는 array[0][100]에는 첫 줄의 파일 내용이 들어가야 하고  array[1][100]에는 다음줄이 들어가야 하는데 말이지요.

두번째로는 2차원 char 배열보다 구조체를 사용해서 받는건 어떨지 궁금합니다.

struct에 char time[10], char local[80]을 지정해서 위의 파일에서 시간 정보와 위치 정보를 따로 받아 나중에 구조체[0], 구조체[1] 과 같은 형식으로 불러 쓸수도 있겠다 생각했는데, 두 방법 중 어느 것이 더 효율적인지 판단하는 기준이나, 비교할만한 방법이 있다면 알려주셨으면 합니다.

감사합니다. 


0
0
  • 답변 4

  • fasdgoc
    213
    2016-09-02 23:18:40

    데이터의 길이가 전부 같지 않고 공간을 아낄 요량이면 동적할당을 고려해보는 것도....

    2차원배열에 전부 저장하면 데이터가 추가되거나 제거될 경우가 생기는 경우라면 전체 재할당이 일어나잖아요?

    어떤 면에서 효율적일 것일 계획이신지 잘 모르겠어서 그냥 막 떠들어보는데...

    아무래도 읽어들인 데이터를 구조적으로 좋은 상태는 후자(읽어들여서 구조체에 저장한 후, 이 구조체들을 배열 형태나 연결리스트나 적절하게 유지하는 방법)겠죠.. 

    그건 님이 어떻게 활용할지에 달린 문제같습니다

    0
  • 나뚜
    37
    2016-09-03 01:07:27

    텍스트 크기에 따라 그냥 배열로는 안될 수 도 있습니다.

    배열에 넣어야 하는 이유라도 있나요?

    그냥 파일에서 메모리에 저장하지 않고 써도 될 것 같은데..

    0
  • Rhth
    14
    2016-09-03 01:42:05

    구조체도 동적할당

    구조체 내부 local도 동적할당 하여 사용

    시간과 지역 정보를 이용하여 hash key 만들어서 저장과 검색 시 사용

    0
  • 응애~
    264
    2016-09-03 09:53:02

    fgets 이후 배열의 삽입, 삭제가 일어나지 않는다면 배열을 사용하는 것도 좋습니다만, 개인적으로는 데이터의 향후 확장성을 고려한다면, 구조체와 vector를 사용하는 것이 더 낫다고 생각됩니다.


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.