#정리
# struct_scanf - 구조체 값을 입력 받는 법
// scanf의 입력 받은 값을 구조체에 넣으려면 구조체 포인터 변수를 준비해야한다.
- Score *pt_s = &s; // 포인터 변수 준비
<1. 문자열의 경우 : 포인터 변수로 접근한 값으로 받는다. - 문자열은 값이 주소값으로 시작된다. >
- s.name=malloc(sizeof(char)*10); //동적 메모리 할당
- scanf("%s",pt_s->name); //포인터로 값 접근하여 입력 받은 값 할당<2. 숫자형의 경우 : 주소값 (&) 으로 받는다.>
- scanf("%d",&pt_s->kor);//->접근 후 &주소값 변환
# struct_scanf - 구조체 값을 입력 받는 법
// scanf의 입력 받은 값을 구조체에 넣으려면 구조체 포인터 변수를 준비해야한다.
(scanf의 입력 받은 값은 -> 연산자로 밖에 접근을 못하고, -> 연산자는 포인터와 같이 사용된다.)
- Score *pt_s = &s; // 포인터 변수 준비
<1. 문자열의 경우 : 포인터 변수로 접근한 값으로 받는다. - 문자열은 값이 주소값으로 시작된다. >
- s.name=malloc(sizeof(char)*10); //동적 메모리 할당
- scanf("%s",pt_s->name); //포인터로 값 접근하여 입력 받은 값 할당
<2. 숫자형의 경우 : 주소값 (&) 으로 받는다.>
- scanf("%d",&pt_s->kor);//->접근 후 &주소값 변환
//일일히 받은 값을 구조체에 넣어줄 수 있지만, 효율이 좋지 않다.
- s.name = name;
--예문 코드 보기--
#include <stdio.h>
#include <stdlib.h>
#pragma pack(1)
typedef struct{
char* name;
int kor;
}Score;
int main(int argc, char **argv)
{
printf("struct scanf...\n");
printf("-----string/int-------\n");
printf("Input name...\n");
char *name=malloc(sizeof(char)*10);
scanf("%s",name);
printf("name: %s\n",name);
int kor;
printf("Input kor : \n");
scanf("%d",&kor);
printf("kor: %d\n",kor);
printf("----- struct & scanf ------\n");
Score s;
//s.name = name; //일일히 받은 값을 구조체에 넣어줄 수 있지만, 효율이 좋지 않다.
Score *pt_s = &s;
//scanf의 입력 받은 값은 -> 연산자로 밖에 접근을 못하고, -> 연산자는 포인터와 같이 사용된다.
//따라서 scanf의 입력 받은 값을 구조체에 넣으려면 구조체 포인터 변수를 준비해야한다.
s.name=malloc(sizeof(char)*10);
printf("Input pt_s->name...\n");
scanf("%s",pt_s->name);//s.name으로 넣을 수 없다.
printf("pt_s->name: %s\n",pt_s->name);//출력은 두 가지 방법 모두 가능
printf("s.name: %s\n",s.name);
printf("Input &pt_s->kor : \n");
scanf("%d",&pt_s->kor);//->접근 후 &주소값 변환
printf("pt_s->kor: %d\n",pt_s->kor);
printf("s.kor: %d\n",s.kor);
return 0;
}