C - strcpy, strncpy / strcmp

2022. 5. 23. 21:37·C

*strcpy 

<string.h> 헤더 파일에 포함된 함수이며 함수의 형태는 strcpy(char a, char b)이며

b에 있는 문자열 전체를 a로 복사하는 함수이다.

 

int main(void) {

	char a[] = "strcpy";
	char b[10];

	strcpy(b, a);
	printf("%s", b);


	return 0;
}

출력 결과

strcpy

 

*strncpy

<string.h> 헤더 파일에 포함되어 있는 함수이며 함수의 형태는 strncpy(char a, char b, size n)이며

b에 있는 문자열을 a로 복사하는데 n(size)만큼만 복사하는 함수이다. 

 

int main(void) {

	char a[] = "strcpy";
	char b[10];
	char c[] = "asdxv";
	
	strncpy(b, c, 4);
	printf("%s", b);


	return 0;
}

출력 결과

asdx儆儆儆儆儆儆儆儆儆儆儆儆儆儆儆儆儆儆儆儆asdxv

빈 배열에 문자 일부만 복사했는데도 사이에 쓰레기 값들이 담겨있다.

 

 

그 이유는 strcpy는 문자열의 끝을 알리는 \0까지 복사를 하기 때문이다. 

고로 n의 크기는 sizeof(origin)보다 작거나 같아야한다.

4만큼만 복사하면 asdx이므로 빈 배열에서 asdx를 넣을 경우 \0을 발견하지 못하고 그 결과 중간에 쓰레기 값이 들어가게 되는 것이다.

 

또한 문자열 포인터에 할당된 문자열은 읽기 전용이다.

왜냐하면 C의 컴파일러는 문자열 포인터에 할당한 문자열을 실행 파일의 읽기 전용 데이터 섹션에 배치하기 때문에 실행 파일이 실행된 뒤에는 읽기 전용 메모리가 되며 쓰기를 할 수 없는 상태이기 때문이다.

 

결론 

strcpy함수를 이용해서 문자열을 복사할땐 끝에 항상 \0이 들어갈 자리까지 배열의 크기를 설정해줘야한다. 

"inho"를 복사하려면 최소 배열의 크기가 5가 되야한다.

 

*strcmp 

문자열 비교 함수이다. strcmp(a, b) 의 형태로 사용하며 반환값이 0 일경우 a와 b는 같은 문자열이라는 뜻이다.

 

if (strcmp(temp->data, x) == 0) return temp;

위와 같은 경우 temp->data와 x가 0일 경우 즉, 두개의 문자열이 같을 경우 temp를 반환한다는 조건문이다.

'C' 카테고리의 다른 글

C - C언어 for Beginner 개정 4판 연습문제 풀이  (0) 2022.06.27
C - 자료구조 연결리스트  (0) 2022.05.19
C - 자료구조 덱  (0) 2022.05.18
C - 자료구조 큐  (0) 2022.05.03
C - 자료구조 스택  (0) 2022.04.07
'C' 카테고리의 다른 글
  • C - C언어 for Beginner 개정 4판 연습문제 풀이
  • C - 자료구조 연결리스트
  • C - 자료구조 덱
  • C - 자료구조 큐
해변
해변
  • 해변
    이노 메모장
    해변
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Java
      • C
      • Python
      • HTML
      • Project
      • Algorithm
      • DataBase
      • OS
      • Block Chain
      • CHATGPT
      • ML
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    링크드리스트
    자료구조
    Big-O
    재귀함수
    시간복잡도
    자바
    c
    python
    AWT
    )
    8퀸문제
    니꼴라스
    java
    자바GUI
    알고리즘
    정렬알고리즘
    버블정렬
    빅오표기법
    wㅜ
    Do it! 클론코딩
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
해변
C - strcpy, strncpy / strcmp

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.