[c언어] dat파일에서 일정한 조건을 만족시킨 문자열을 한 줄씩 입력 받아 배열에 저장하는 코드의 오류를 고치고 싶습니다.

조회수 47회

words.dat이라는 파일을 입력받아, 각 줄의 5번째 문자까지 배열에 저장하는

코드를 만들려고 합니다.

단, 모든 줄을 5글자씩 입력받는 것이 아니고

첫번째 글자가 *로 시작하는 문자열을 생략하는 규칙을 걸었습니다.

words.dat은 첨부파일에 있습니다.

words.dat의 예시를 몇가지 들어드리겠습니다.

  • File "words.dat" from the Stanford GraphBase (C) 1993 Stanford University
  • A database of English five-letter words
  • This file may be freely copied but please do not change it in any way!
  • (Checksum parameters 5757,526296596)

aargh

abaca 2

.........

zooms*3,1

zowie 4

  • End of file "words.dat"

대충 이런 식입니다.

아래는 코드입니다.

void add_words();

const int SIZE = 5; const int ONE = 1;

int main() { void add_words() //words.dat을 입력받는 함수이다. {

    char* n[5762][5]; // 문자열들을 받아둘 공간
    char* p[5762][5]; //진짜 최종 저장 공간
    char* name[5];
    char name1[1];
    char test[1]; //첫번째 문자가 *인지 아닌지를 테스트 하는 문자열
    int i = 0;
    FILE* fp = NULL;
    int cnt = 0; //종료가 되었는지 확인하는 변수

    fp = fopen("Words.dat", "r");
    if (fp == NULL) //파일이 비어 있으면 긴급 탈출.
    {
        fprintf(stderr, "File Open Error!\n");
        exit(1);
    }

    for (i = 0; i < 5762; i++) //5줄의 문자를 읽어옴.
    {

        name1 = (char*)malloc(sizeof(char) * ONE);
        fgets(name1, ONE, fp);


        test = name1;

        if (test == '*')  //만약 첫번째 문자가 *이라면
        {
            goto NoAccept;
        } //그냥 건너뛴다.
        else {
            name = (char*)malloc(sizeof(char) * SIZE);
            fgets(name, SIZE, fp);
            for (i = 0; i < 5; i++)
            {
                p[i][0] = n[i][0];
            }
        }
    NoAccept:









        //배열 n[]에 모든 데이터들이 저장되어 있을 것이다.

    }
    fclose(fp);
    return;
}

}

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.