[strcpy]
→ 문자열을 대입하는 함수
strcpy(대입돨 문자열의 베얄명, 대입할 문자열)
🔺 🔺
복사할 곳 복사할 내용
//예시
char str1[20] = "apple";
strcpy(str1, "mango");
문자열은 그 문자열의 주소이다.
즉, strcpy 인자는 주소두개를 받아서 실행하는 함수이다. 따라서 아래와 같이 두 번째 인자에 주소인 배열을 넣어서 실행시킬 수 있다.
strcpy(대입될 문자열의 베얄명, 대입할 문자열의 베얄명)
🔺 🔺
복사할 곳 복사할 내용
//예시
char str1[20] = "apple";
char str2[20] = "mango";
strcpy(str1, str2);
또는 포인터 변수로 문자열을 받아서 그 포인터 변수를 대입할 문자열로 넣을 수도 있다.
strcpy(대입될 문자열의 베얄명, 대입할 문자열의 포인터 변수명)
🔺 🔺
복사할 곳 복사할 내용
//예시
char str1[20] = "apple";
char *ps1 = "mango";
strcpy(str1, ps1);
불가능한 예시
//불가능 예시
char *ps1 = "apple";
char *ps2 = "mango";
strcpy(ps1, ps2);
//가능한 예시
char str1[20] = "apple";
char *ps1 = str1;
char *ps2 = "mango";
strcpy(ps1, ps2);
위에 처럼 첫 번쨰 인자에는 저장할 공간(메모리)가 있어야하기 때문에 배열만 가능하다.
[strncpy]
→ 원하는 개수의 문자만을 복사하는 함수
strncpy(대입될 문자열의 베열명, 대입할 문자열, 복사할 문자수)
🔺 🔺
복사할 곳 복사할 내용
//예시
char str1[20] = "apple pie";
strncpy(str1, "mango jam", 5);
//결과
//mango pie
[strcat], [strncat]
→ 문자열을 붙이는 함수
strcat(붙여넣을 문자열의 베열명, 붙일할 문자열)
🔺 🔺
붙여넣을 곳 붙여넣을 내용
strncat(붙여넣을 문자열의 베열명, 붙일할 문자열, 복사할 문자수)
🔺 🔺
붙여넣을 곳 붙여넣을 내용
//예시
char str[20] = "straw";
strcat(str, "berry"); //strawberry
strncat(str, "piece", 3); //strawberrypie
[strlen]
→ 문자열 길이를 계산하는 함수
strlen(크기를 확인할 배열명)
//예시
char str[80] = "hello";
int len = strlen(str);
printf("%d", len); //5
[strcmp], [strncmp]
→ 문자열을 사전 순서대로 비교하는 함수
strcmp(비교할 배열명1, 비교할 배열명2)
// 배열명1이 배열명2보다 사전 순서보다 나중에 나오면 1반환
// 배열명1이 배열명2보다 사전 순서보다 먼저 나오면 -1반환
// 배열명1과 배열명2가 같은 문자열이면 반환
char str1[20] = "pear";
char str2[20] = "peach";
strcmp(str1, str2); // 1
사전 순서대로 비교한다는건 무슨 말인가?
→알파벳 순서대로 비교하겠다는 의미이다.
pear와 peach를 비교해보자.
1. 첫 번째 요소 비교
[ p | e | a | r | \\0 ] -> str1
🔺
[ p | e | a | c | h | \\0 ] -> str2
🔺
→ 같은 아스키코드 값을 갖고 있다.
2. 두 번째 요소 비교
[ p | e | a | r | \\0 ] -> str1
🔺
[ p | e | a | c | h | \\0 ] -> str2
🔺
→ 같은 아스키코드 값을 갖고 있다.
3. 세 번째 요소 비교
[ p | e | a | r | \\0 ] -> str1
🔺
[ p | e | a | c | h | \\0 ] -> str2
🔺
→ 같은 아스키코드 값을 갖고 있다.
4. 네 번째 요소 비교
[ p | e | a | r | \\0 ] -> str1
🔺
[ p | e | a | c | h | \\0 ] -> str2
🔺
→ r은 아스키 코드 값이 114, c는 아스키 코드 값이 99이기 때문에 사전 순서로 str1이 str2보다 사전에 나중에 나오기에 반환 값은 1이다.
strncmp는 strcmp함수와 거의 같지만 비교할 문자 수를 세 번째 인수로 지정할 수 있다.
strncmp(비교할 배열명1, 비교할 배열명2, 비교할 문자 수)
char str1[20] = "pear";
char str2[20] = "peach";
strncmp(str1, str2, 3); //0 즉, 같다.
주의할 점: 비교할 두 문자열의 대소문자는 동일하게 해야한다.
'문법관련 > C' 카테고리의 다른 글
14.1 다차원 배열 (0) | 2024.08.07 |
---|---|
13. 변수 (0) | 2024.07.04 |
12.1 문자열과 포인터 (0) | 2024.06.26 |
11.3 getchar(), putchar() (0) | 2024.06.26 |
11-2. 버퍼를 이용하는 입력 함수 (0) | 2024.06.25 |