C 언어 에서 strcpy()함수 와 strncpy()함수 의 사용 을 자세히 설명 합 니 다.
헤더 파일:\#include
정의 함수:
char *strcpy(char *dest, const char *src);
함수 설명:strcpy()는 매개 변수 src 문자열 을 매개 변수 dest 가 가리 키 는 주소 로 복사 합 니 다.반환 값:매개 변수 dest 의 문자열 시작 주 소 를 되 돌려 줍 니 다.
추가 설명:인자 dest 가 가리 키 는 메모리 공간 이 크 지 않 으 면 버퍼 넘 침(buffer Overflow)의 오류 가 발생 할 수 있 습 니 다.프로그램 을 작성 할 때 특히 주의 하거나 strncpy()로 대체 하 십시오.
범례
#include <string.h>
main(){
char a[30] = "string(1)";
char b[] = "string(2)";
printf("before strcpy() :%s
", a);
printf("after strcpy() :%s
", strcpy(a, b));
}
실행 결과:
before strcpy() :string(1)
after strcpy() :string(2)
C 언어 strncpy()함수:문자열 을 복사 하기 전 n 글자헤더 파일:\#include
strncpy()는 문자열 의 앞 n 자 를 복사 하 는 데 사 용 됩 니 다.원형 은 다음 과 같 습 니 다.
char * strncpy(char *dest, const char *src, size_t n);
[매개 변수 설명]dest 는 대상 문자열 지침 이 고 src 는 원본 문자열 지침 입 니 다.strncpy()는 문자열 src 앞 n 자 를 문자열 dest 에 복사 합 니 다.
strcpy()와 달리 strncpy()는 dest 에'\0'표 시 를 추가 하지 않 습 니 다.이 는 상식 에 맞지 않 는 많은 문 제 를 일 으 켰 습 니 다.아래 의 예제 에서 설명 하 겠 습 니 다.
메모:src 와 dest 가 가리 키 는 메모리 영역 은 겹 칠 수 없 으 며,dest 는 n 개의 문 자 를 배치 할 충분 한 공간 이 있어 야 합 니 다.
[반환 값]문자열 dest 를 되 돌려 줍 니 다.
[함수 예시]4 개의 문자열 을 복사 합 니 다.
#include<stdio.h>
#include<string.h>
int main(void){
char dest1[20];
char src1[] = "abc";
int n1 = 3;
char dest2[20]="********************";
char src2[] = "abcxyz";
int n2 = strlen(src2)+1;
char dest3[100] = "http://see.xidian.edu.cn/cpp/shell/";
char src3[6] = "abcxyz"; // '\0'
int n3 = 20;
char dest4[100] = "http://see.xidian.edu.cn/cpp/u/yuanma/";
char src4[] = "abc\0defghigk";
int n4 = strlen(src3);
strncpy(dest1, src1, n1); // n1 strlen(str1)+1, '\0'
strncpy(dest2, src2, n2); // n2 strlen(str2)+1, src2 '\0' dest2
strncpy(dest3, src3, n3); // n3 strlen(str3)+1, str3
strncpy(dest4, src4, n4); // src4 '\0'
printf("dest1=%s
", dest1);
printf("dest2=%s, dest2[15]=%c
", dest2, dest2[10]);
printf("dest3=%s
", dest3);
printf("dest4=%s, dest4[6]=%d, dest4[20]=%d, dest4[90]=%d
", dest4, dest4[6], dest4[20], dest4[90]);
return 0;
}
VC 6.0 실행 결과:MinGW 실행 결과:
위의 운행 결 과 를 통 해 알 수 있 듯 이 strncpy()는 통제 하기 어렵 고 행동 이 기괴 하 다.strncpy()를 사용 하 는 가장 안전 한 방법 은 n 을 strlen(src)+1,즉 전체 문자열 을 복사 하 는 동시에'\0'을 dest 에 추가 하 는 것 입 니 다.그러나 이 는 strcmp()의 역할 과 별 반 다 르 지 않다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 구현 천둥 제거 게임 상세 정보먼저 작은 메뉴를 표시하고 게임을 할지 여부를 선택하십시오.사용자가 종료를 선택하면 프로그램 실행이 끝나고, 사용자가 게임을 선택하면 지뢰 제거 위치 좌표를 입력하라는 메시지가 표시됩니다.사용자가 입력한 좌표가 바둑...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.