[c언어] dat파일에서 일정한 조건을 만족시킨 문자열을 한 줄씩 입력 받아 배열에 저장하는 코드의 오류를 고치고 싶습니다.
조회수 809회
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;
}
}
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력