개발의 시작과 끝
2020.05.18 / Day - 35 C언어 문자열, Strcpy, Strncpy 본문
35일차
- 12 : 00 ~ 02 : 00 : jsaon공부
문자열 변수
char str1[5] = "abcd";
str[0] = 'a';
str[1] = 'b';
str[2] = 'c';
str[3] = 'd';
str[4] = '\0';
요소가 char형인 str이라는 이름의 배열을 선언하고, 대입 연산자 오른쪽에 선언된 문자열을 저장하고 있다.
따라서 str이 저장하고 있는 문자열은 변수가 된다.
문자열 상수
char *str2 = "ABCD";
[●] -------------------->[A B C D \n]
포인터 문자열 상수
대입 연산자의 왼쪽에 char형 포인터를 선언하고, 오른쪽에는 "ABCD"라는 문자열을 선언하고 있다.
이는 포인터 str2를 이용해서 문자열 상수 "ABCD"를 가리키겠다는 의미가 된다.
따라서 str2는 문자열의 첫 문자 'A'를 가리키게 된다. 포인터의 타입이 char*인 이유도 여기에 있다.
Strcpy
null문자를 만나기 전까지의 문자열을 복사한다.
#include <stdio.h>
#include <string.h>
int main( )
{
char str1[]="Sample string";
char str2[40];
char str3[40];
strcpy( str2, str1 );
strcpy( str3, "copy successful" );
printf( "str1: %s\n", str1 );
printf( "str2: %s\n", str2 );
printf( "str3: %s\n", str3 );
return 0;
}
출력
str1: Sample string
str2: Sample string
str3: copy successful
Strncpy
문자열을 일정 길이만큼만 복사한다.
#include <stdio.h>
#include <string.h>
int main( )
{
char str1[]= "To be or not to be";
char str2[40];
char str3[40] = {0,};
strncpy( str2, str1, sizeof(str2) );
strncpy( str3, str2, 5 );
//str3[5] = '\0';
puts( str1 );
puts( str2 );
puts( str3 );
return 0;
}
출력
To be or not to be
To be or not to be
To be
참조
'C언어' 카테고리의 다른 글
2020.05.08 / Day - 26 C언어 반복문 (0) | 2020.05.08 |
---|---|
2020.05.07 / Day - 25 C언어 기초 출력 (0) | 2020.05.07 |