자주 나오는 질문입니다.
배열은 선언할대.. 자리수가 고정되어 있어야 합니다.
따라서 님의 코드는 당연히 에러가 발생합니다.
동적으로 하려면.. malloc/free와 링크드 리스트에 대해서 공부해보세요
박상민 님이 쓰신 글 :
: 대충 프로그램 내용은 상대방의 성적(국어,영어,수학)을 입력받아 for 문으로 좍 출력 하는건데여..
:
: 이때 몇명의 성적을 입력할것인지의 여부를 변수 in에 저장을해서 배열[in] 이런식으로 선언을 하려 했는데
:
: 역시 아직 내공이 부족한 탓에 이것저것 많이 헷갈리네여^^ 일단 소스는 이렇게 코딩했구여..
:
: #include <stdio.h>
: #define A 90
: #define B 80
: #define C 70
: #define D 60
:
: struct sungjuk
: {
: int hakbun;
: char name[30];
: int kor;
: int eng;
: int math;
: int tot;
: int ave;
: char hakjum;
: };
:
: void main()
: {
: int in,i;
:
: printf("몇명의 시험점수를 입력하시겠습니까?\n");
: scanf("%d",&in);
:
: struct sungjuk student[in]; <- 컴파일 할경우 여기서 꼭 오류가 나더군여..ㅠㅠ
: struct sungjuk *stu;
: stu=student;
:
:
:
: printf("학번 이름 국어 영어 수학 총점 평균 학점\n");
: printf("=============================================\n");
:
: for(i=0;i<=in;i++,stu++)
: {
: printf("학번을 입력하세요:\n");
: scanf("%d",&stu->hakbun);
: printf("이름을 입력하세요:\n");
: scanf("%s",&stu->name);
: printf("국어점수를 입력하세요:\n");
: scanf("%d",&stu->kor);
: printf("영어점수를 입력하세요:\n");
: scanf("%d",&stu->eng);
: printf("수학점수를 입력하세요:\n");
: scanf("%d",&stu->math);
:
: stu->tot=stu->kor+stu->eng+stu->math;
: stu->ave=stu->tot/3;
:
: if(stu->ave>=A) stu->hakjum='A';
: else if(stu->ave>=B) stu->hakjum='B';
: else if(stu->ave>=C) stu->hakjum='C';
: else if(stu->ave>=D) stu->hakjum='D';
: else stu->hakjum='F';
:
: printf("%4d%4s%4d%4d%4d%4d%4d%4c",stu->hakbun,stu->name,stu->kor
: ,stu->eng,stu->math,stu->tot,stu->ave,stu->hakjum);
: }
: }
: 자꾸 저기 변수 in 이 선언을 잘못해서인지 오류가 나는 바람에 결과물 확인도 못해보고 있답니다..
:
: 제가 궁금한건 배열[] 괄호안에 변수를 넣어서 사용할수 있는지의 여부와 지금 작성된 소스의 for(i=0;i<in;i++,stu++)
:
: 부분이 제대로 돌아 갈것이냐의 여부...
:
: 지금 책으로 포인터부분 과 구조체 부분을 보면서 작성해 봤는데 책에는 자세하게 나와 있지도 않고 해서 급한 마음에
:
: 이렇게 도움을 얻어보자 올려봅니다.. ^^
:
: 제발 많은 질책과 조언 부탁드립니다..
|