strcpy
의 작업은 한 문자열의 내용을 다른 문자열로 복사하는 것임을 알았습니다. 지금까지 나는 strcpy
을 사용할 때 이전 내용이 완전히 삭제되고 새로운 내용이 복사된다는 것을 생각하고있었습니다. 다음 프로그램을 참고하십시오.기존 문자열에 새 문자열을 복사 한 후에도 일부 포함 된 오래된 항목도 사용할 수 있습니다
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char str[]="abcdef";
strcpy(str,"xyz");
cout<<str[4];
cout<<str;
return 0;
}
출력은 exyz
입니다. 컴파일 된 코드는 online compiler을 참조하십시오.
첫 번째 문제는 새로운 문자열을 복사 할 때 이전 포함 된 내용을 삭제해야하지만 여기서는 발생하지 않는다는 것입니다.
그런 다음 새로운 문자열 길이가 기존 문자열보다 작기 때문에 포함 된 처음 3 개만 삭제되고 나머지는 남게된다는 결론을 내 렸습니다. 하지만 이라고 쓰면 cout<<str[3];
이라고 쓰여졌을 때 아무 일도 없었습니다.
왜 cout<<str[4];
에 우리는 e
을 받고 있지만, cout<<str[3];
에 우리는 d
을 받고 있지 않습니다.
"xyz"는 끝에 0을 가지므로 d가 보이지 않지만 e를 보게됩니다. 또한 왜 std :: string을 사용해야하고 C-strings는 사용하지 않아야합니다. – Borgleader