c언어 질문입니다.. 포인터와 배열 관련이요 ㅠㅠ..
알프레드
void Init(Score **r)
{
char name[20];
char *name_list[20];// 이름.txt의 이름들 저장
int *s_num_list;// 학번들 저장
int i = 0;
int j;
int n;
Score st;
FILE *fp;
fp = fopen(이름.txt, rt);
if(fp == NULL)
{
gotoxy(37, 20); printf(File Not Found!!\n);
exit(1);
}
while(fscanf(fp, %s\n, name) != EOF)
i++;// 이름 갯수 새려고~
name_list[20] = (char*)malloc(20*i);// 2차원배열 크기 : ix20
s_num_list = (int*)malloc(4*i);// 1차원배열 크기 : ix4
j = 0;
while(fscanf(fp, %s\n, name) != EOF)// 다시 ;;
{
if(j i)
{
strcpy(name_list[j], name);
j++;
}
}
fclose(fp);
fp = fopen(Subject.txt, rt);
if(fp == NULL)
{
gotoxy(37, 20); printf(File Not Found!!\n);
exit(1);
}
fscanf(fp, %d\n, &n);// 과목의 수
fflush(stdin);// 꼭 필요한가?! ★
fclose(fp);
for(j=0; ji; j++)
{
fp = fopen(strcat(name_list[j], .txt), rt);
if(fp == NULL)
{
gotoxy(37, 20); printf(File Not Found!!\n);
exit(1);
}
fscanf(fp, %s %d, name_list[j], &s_num_list[j]);
Main_Screen_Add_Sub(r, name_list[j], s_num_list[j], n);// 노드 등록하는 함수 호출
fclose(fp);
}
free(name_list);
free(s_num_list);
}일단 빨간색 부분에서 오류가 나는것 같습니다.. 실행해보면 그전까진되다가 빨간색부분전에서 오류가뜨거든요..
근데 중간에 name_list를 출력하면 거기서 또 오류가뜨구 그래요..
제생각에는 파란색부분인배열선언이나 동적할당 자체가 잘못된거같은데 ㅠㅠ 개념이부족해서 그러니
설명과 틀린부분좀 알려주십시요 부탁드립니다고수님들 ㅠㅠ
-
냥냥
carrot
-
ComeOn
아~ 감사합니다그럼 포문으로 할당받아야겠네요?
-
아픔이보여
포인터 배열을 만드신다는 것은 것은 포인터를 배열의 개수만큼 만드는 것입니다
char *name_list[20];
이라면, char *포인터를 20개 만든거죠.
그렇다면, 할당도 20번 해야겠죠? ^^;;;;