질문입니다.
255
작성한 질문수 15
5분 부터 나오는 텍스트 세크먼트 영역에 scanf로 입력 받는 것이 불가 해서
버퍼 배열로 scanf 로 입력 받고, p.fname 에 동적 할당하여
문자열을 복사 해주는 방법을 알려 주셨는데요
이것이 가능 한 이유가 텍스트 세그먼트에 접근 하지 않고 ,
p.fame의 주소를 바꿔서 scanf 값을 입력 받는 것이 맞는 건가요? 그럼 동적할당이 해체 되고 나면 p.fname이 가르 키는 주소는 원래 텍스트 세그먼트를 가르키는 것이 맞나요??
그리고 7분 부터 에제 답을 설명 하는데 구조체메모리가 궁금해서 pst->fname 을 메모리 주소창에 쳐서 들어갔는데
문자열에 잘못된 문자가 있습니다 라고 나오는데
구조체 메모리에 접근 하려면 pst->fname 이렇게 주소창에 넣는것이 맞나요?
제가 제대로 이해한건지 궁금해서 질문 남깁니다.
답변 2
0
문자열은 상수여서 대입연산과 문자열을 바꿀수가 없음
그래서 strcpy 함수를 써야 하는데 , strcpy 함수는 목적지 포인터와 소스 포인터를 값을 넣어야함
소스포인터에 배열을 임시로 사용하여 scanf 함수로 입력 받은 값을 저장 해놓음
목적지 포인터 p.fname 에 동적할당을 요청함
동적 할당을 요청하는 이유는 글자 크기를 알수 없기 때문이고
그러면 텍스트 세그먼트에는 전에 사용 했던
struct namect p = { "Jeong_mo", "Hong" };
"jeong_mo" "Hong"과 새로 입력 받은 문자열도 저장 되어 있는것이 맞는 건가요??
답변이 많은 도움이 되네요 감사합니다
0
안녕하세요?
전체적으로 강의의 내용을 잘못이해하고 계신 것 같군요.
너무 급하게 이해하려 하시지 마시고 차근차근 고민해보세요.
저는 동적할당에 대한 강의를 다시 보시는 것을 권장해드리고 싶네요.
문법적인 부분만이 아니라 동적할당은 무엇을 하는 것인지, strcpy는 무슨 함수인지에 대해서 알아보셨으면 좋겠습니다.
메모리 주소창에 대해서는 Debug모드에서 Debug -> Windows -> Memory 를 말씀하시는 것이 맞다면, 메모리의 주소를 입력하셔야 합니다.
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
52
3
main 함수에서 왜 int만 선언이 되는걸까요
1
56
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
54
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
49
1
프로토타입과 함수간의 인자 불일치
1
73
2
12.12 헤더 관련 질문
1
60
2
Visual Studio Community 2026 사용 문의
1
137
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
60
2
getchar(), putchar()
1
93
3
강의자리ㅛ
1
79
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
112
2
소스파일안에 여러 파일
1
75
2
F5와 F7의 차이
1
76
2
c = TWO * (a+b); 에서 a와 b는?
1
58
2
; 세미콜론을 붙이는 기준에 문의
1
68
1
Step over 기능 문의
1
53
2
2.6 강의 따옴표 출력 규칙 문의
1
74
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
60
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
64
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
53
2
11.5 코드 구현
1
67
2





