UNIT 42.2 문자열 붙이기 질문
, 이 상훈님이 작성#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define _CRT_SECURE_NO_WARNINGS
int main()
{
char s1[10] = "world";
char *s2 = malloc(sizeof(char) * 20);
s2 = "Hello";
strcat(s2, s1);
printf("%s\n", s2);
free(s2);
return 0;
}
이 소스코드를 실행해보면 오류가 나는데 왜 오류가 나는 건가요?...
회신: UNIT 42.2 문자열 붙이기 질문
, 도장_ 관리자님이 작성s2 = "Hello";
처럼 대입할 수 없습니다.
포인터로 할당된 공간은 문자열 함수로 복사해야 합니다.
strcpy(s2, "Hello");
이와 같은 형태로만 써야 합니다.
s2는 빈 문자열이므로
strcat(s2, "Hello");
도 결과는 같습니다.
오직 배열만 선언하면서 문자열 리터럴을 할당할 수 있습니다.
포인터는 메모리 공간을 가리키는 주솟값이므로 포인터끼리는 연산할 수 있습니다. 이때의 연산은 주솟값 연산이며, 해당 메모리 공간을 직접 조작하는 것은 아닙니다.
C 언어 코딩 도장을 한 번 끝까지 공부하고, 다시 복습하면서 전체를 훑어보면 해당 부분에 대한 이해도가 높아질 것입니다.