[답변 감사합니다. :-) ]구조체 포인터 이용한 간단한 프로그램

익명 사용자의 이미지

제목 그대로 구조체 포인터를 이용해서 간단 성적프로그램(?)을 짜는데
요...

워낙 초짜라... 구조체 포인터를 잘 이용을 못하겟네요...ㅠㅠ

대략 이름과 전화번호 국어 이정도를 입력받구... 출력하는 건데요...

typedef struct Mystruct {
char *name ;
char *phone ;
int kor ;
} sT;

대략 이렇게 헤더파일에 선언을 했구요... main()에서

sT *pstr , *p ;
int su ;

scanf("%d",&su); //몇명을 입력받을 건지...

pstr = (sT *)malloc(sizeof(sT)*su) ; //전체 메모리 잡구...
p = pstr ;

for ( i =0 ; i p->name = (char *) malloc(10); //?? 이런식으로 다시 메모리 잡나요?
p->phone = (char *) malloc(10); // 그럼 국어점수 같은 경우는???

scanf("%s",p->name);
scanf("%s",p->phone);
scanf("%d",p->kor) // 국어점수 이렇게 입력 못하는 이유는?

여기서 국어점수두 메모리 설정을 위에 p->name, p->phone 하듯 해야 하나
요?
아구... 모가 몬지... 헷갈리구... 정신없어서...죽갔네요...ㅠㅠ

누가좀 쉽게 설명좀 부탁드립니다...
구조체 포인터 어렵넹...ㅠㅠ

익명 사용자의 이미지

int kor;
...

scanf("%d", &kor);

일케하지 않던가요? 참고 하세요.. ^^
구조체 안에 있어도 마찬가지일거 같은뎅..

익명 사용자의 이미지

저라면...
char *buf [ size ]; 이케 선언 하고
.....
.....
printf (" Input kor \n");
scanf ("%s", &buf );
strcpy ( &buf, &(p->kor);
이런식으로.....
맞는지 멀것네여.... 걍 생각 나는대루 해서리... 더움 되길 바래여

익명 사용자의 이미지

님...

p->kor가 무슨 형이죠?

int형입니다!

근데 그걸 int *형으로 입력받기로 되어 있는 곳에 쓰면...
당돌 빠따 에러 나죠.

않 그래요? 그러니까...

int -> int *로 바꾸려면,

int->kor =========> &(int->kor)

이래야 하지 않나요? 쩝...

pointer하고, 뭐 그런것들....다시 찬찬히 공부해 주시는게 좋을 듯 합니
다.

익명 사용자의 이미지

저도 초짜지만서두...

pstr = (sT *)malloc(sizeof(sT)*su) ; //전체 메모리 잡구...

이렇게 하면 sizeof( sT ) 바이트씩 포인터를 옮겨가면서 입력을 받아야 합니다.

간단한 해결 방법으로 구조체 배열을 만들던가 링크드 리스트를 사용하는 방법이 있습니다.