>백엔드 개발 >C++ >C/C++의 strncpy가 안전하지 않다고 생각하는 이유는 무엇입니까?

C/C++의 strncpy가 안전하지 않다고 생각하는 이유는 무엇입니까?

WBOY
WBOY앞으로
2023-09-13 09:17:021241검색

C/C++의 strncpy가 안전하지 않다고 생각하는 이유는 무엇입니까?

strncpy() 함수는 소스에서 대상으로 지정된 수의 문자를 복사하는 데 사용됩니다.

다음은 strncpy()의 구문입니다

char *strncpy( char *destination, char *source, size_t n);

여기서, Destination은 원본 문자열이 복사될 대상 배열에 대한 포인터이고, source는 복사할 문자열, n은 복사할 문자열입니다. . 복사할 최대 문자 수입니다.

strncpy() 함수는 소스 문자열의 처음 n자에 NULL 문자가 없으면 대상 문자열이 NULL로 끝나지 않기 때문에 안전하지 않습니다.

다음은 C++의 strncpy() 함수를 보여주는 프로그램입니다.

Example

온라인 데모

#include <iostream>
#include <cstring>
using namespace std;
int main () {
   char source[20] = "This is a string";
   char dest[20];
   strncpy(dest, source, 4);
   cout << "The destination string is: " << dest;
   return 0;
}

Output

위 프로그램의 출력은 다음과 같습니다.

The destination string is: This

이제 위 프로그램을 이해해 봅시다.

소스 문자열에는 "This is a string"이라는 데이터가 포함되어 있습니다. 그런 다음 strncpy()를 사용하여 처음 4자를 대상 문자열에 복사합니다. 그런 다음 대상 문자열의 내용을 인쇄합니다. 이를 보여주는 코드 조각은 아래와 같습니다.

rreee

위 내용은 C/C++의 strncpy가 안전하지 않다고 생각하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제