strcpy 함수를 쓰는 이유
1435
작성한 질문수 3
밑에서 7번째 문장에 원래 strcpy(p->title, "C Programming"); 이라는 함수 대신에 p->title ="C Programming" 이라고 설정하니 실행이 안됩니다. 왜 실행이 안되는 것인지 이유를 모르겠습니다.
꼭 strcpy 를 써야하는 이유가 있나요?
답변 2
2
구조체 변수를 포함할 수 있는 메모리를 할당할 때 멤버변수가 메모리를 점유하게됩니다.
이때 char title[100]; 이 초기화 되지 않은 상태로 메모리를 점유합니다.
1) p->title="C Programming"; 오류가 나는 이유
해당 구문이 의미하는 것은 p->title에 "C Programming"의 시작주소를 대입하는 것을 의미합니다.
하지만 p->title은 포인터 '상수'로 수정불가능한 Lvalue입니다.
수정 불가능한 Lvalue에 값을 대입하려하니 에러가 발생합니다.
즉, p->title이 가리키는 주소를 바꿀 수 없는 것 입니다.
2) strcpy는 가능한 이유?
strcpy는 아래와 같이 char*, char* 파라미터를 받습니다.
char *strcpy( char *dest, const char *src );
strcpy(p->title, "C Programming"); 는
포인터 변수 dest, src가 각각 p->title의 주소, "C Programming"의 주소를 가리킵니다.
이들을 이용해 포인터 dereferencing을 이용해 src의 각 문자를 dest에 차례로 복사하게됩니다.
0
안녕하세요,
C언어에서는 C++, Java처럼 string을 표현하는 자료형이 없습니다.
그렇기에 특정 변수 (문자 배열)에 문자열을 저장하는 등의 코드를 작성할 적에는
strcpy 등을 이용해 복사를 해야 합니다.
여느 자료형처럼 = 로 할당할 수 없지요.
감사합니다.
Export template 안됨
1
63
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
88
3
main 함수에서 왜 int만 선언이 되는걸까요
1
78
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
74
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
78
1
프로토타입과 함수간의 인자 불일치
1
87
2
12.12 헤더 관련 질문
1
74
2
Visual Studio Community 2026 사용 문의
1
167
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
71
2
getchar(), putchar()
1
111
3
강의자리ㅛ
1
92
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
127
2
소스파일안에 여러 파일
1
87
2
F5와 F7의 차이
1
90
2
c = TWO * (a+b); 에서 a와 b는?
1
67
2
; 세미콜론을 붙이는 기준에 문의
1
78
1
Step over 기능 문의
1
64
2
2.6 강의 따옴표 출력 규칙 문의
1
87
2
int main 함수 관련 오류 문의
1
76
2
13.4 words[0]
0
73
2
11.7 함수를 구현해 봤습니다.
1
67
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
71
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
60
2
11.6 fit_str함수를 구현해 봤습니다.
1
58
2





