In this blog post, you will learn what is the strcpy() and how to use the strcpy() function in C to copy strings with the help of programming examples.
What is strcpy in C?
The strcpy function copies the string pointed to by src (including the terminating null character) into the array pointed to by dest. The strcpy() declares in the header file <string.h>.
Syntax strcpy in C:
char *strcpy(char * restrict dest, const char * restrict src);
strcpy Parameters:
The strcpy() function accepts the following parameters:
dst
— pointer to the destination object.
src
— pointer to the source object (null-terminated byte string).
strcpy() return value:
The strcpy function returns the value of dest
.
Example program to describe how to use strcpy in C:
The following program illustrates the working of the strcpy() function in the C language.
#include <stdio.h> #include <string.h> int main() { char src[20] = "Aticleworld.com"; char dest[20] = {0}; // copying dest to src strcpy(dest, src); //print dest printf("%s",dest); return 0; }
Output:
Aticleworld.com
Explanation:
In the above code with the help of strcpy, we are copying the string bytes from src to dest buffer. After the copy, we are printing the dest buffer.
Undefined Behavior of strcpy() :
The behavior of strcpy() is undefined if:
1.
Copying takes place between objects that overlap.
2.
dest array is not large enough to store the src string bytes.
3.
src is not a pointer to a null-terminated byte string.
4.
dest is not a pointer to a character array.
Is strcpy safe to use?
No, the strcpy is not safe to use. There are the following reasons that make strcpy unsafe.
1.
The strcpy() function does not check for sufficient space in the destination before it copies the source, it is a potential cause of buffer overruns. Consider the below example,
#include <stdio.h> #include <string.h> int main() { char src[20] = "Aticleworld.com"; /* Here destination is not large enough to store the src. so the behaviour of strcpy is unspecified. */ char dest[5] = {0}; // copying dest to src strcpy(dest, src); //print dest printf("%s",dest); return 0; }
Output:
Undefined Behaviour
2.
strcpy depends on a trailing ‘\0’ that also makes it unsafe.
Note:
The strncpy function is a safer version of strcpy to copy a string from a source to a destination buffer. But strncpy is also not much safer than strncpy_s.
Recommended Articles for you:
- C Programming Courses And Tutorials.
- CPP Programming Courses And Tutorials.
- How to Use strncpy() and how to write your own strncpy().
- Why strncpy is not safe and how to fix it.
- What is strncpy_s and how to use strncpy_s in C
- How to use memcpy and implement own.
- Implement own memmove in C.
- Difference between memmove and memcpy (memmove vs memcpy).
- Use of strlen function in C.
- strtok function with programming examples.
- strcat function in C with examples code.
- How to use and Implement own strncat in C
- Implement vector in C.
- Implement own atoi in C.