도서관리대여프로그램을 코딩중입니다. 오류는 안뜨는데 프롬프트 실행창 화면에서 작업중단이 뜨네요.
글쓴이: seojh1431 / 작성시간: 월, 2014/07/07 - 9:39오전
void call(*bookName[20]) 함수에서 data라는 변수부분에 stack around....coruptted 가 뜹니다.
call 함수 기능은 텍스트 파일에 저장되어 있는 도서목록을 불러와 bookName 이라는 2차원 배열에 모두 저장 시키는것입니다.
여기에서 data에 복사된 것이 bookName으로 다시 복사 됩니다. 이 과정에서 뭐가 잘 못된 것인지 잘 모르겠네요.
가르쳐주세요. 파일올릴게요;;
File attachments:
첨부 | 파일 크기 |
---|---|
![]() | 5.67 KB |
Forums:
지나가다
data와 bookName 의 형식이 달라서 그런것으로 추정되는데요.. (strcpy시 오류)
굳이 data라는 변수가 필요한가요? 아래와 같이 수정시에 일단 이부분은 넘어가는것 같습니다만 ^^;
void call(char (*bookName)[20])
{
int num = 0;
//char data[50] = {0,};
FILE *macro = fopen("list.txt", "r");
while (fgets(bookName[num], 100, macro) != NULL) //읽어올 데이터가 없을때까지 반복
{
printf("%d. %s", num + 1, bookName[num]);
//strcpy(bookName[num], data);
num++; //줄수를 1 늘리고
}
printf("num : %d\n", num);
fclose(macro);
}
정말 감사합니다^^
ㅎ
지나가다
기존 소스 기준으로 보면 아래와 같이 수정하면 되는것 같네요
void call(char (*bookName)[20])
{
int num = 0;
//char data[50] = {0,};
char data[50][20];
FILE *macro = fopen("list.txt", "r");
while (fgets(data[num], 100, macro) != NULL) //읽어올 데이터가 없을때까지 반복
{
printf("%d. %s", num + 1, data[num]);
strcpy(bookName[num], data[num]);
num++; //줄수를 1 늘리고
}
printf("num : %d\n", num);
fclose(macro);
}
아하...일차원 배열 이차원배열 차이...그거군요?
감사합니다
댓글 달기