Skip to content
Related Articles

Related Articles

Improve Article

Function to copy string (Iterative and Recursive)

  • Difficulty Level : Basic
  • Last Updated : 16 Jun, 2021

Given two strings, copy one string to other using recursion. We basically need to write our own recursive version of strcpy in C/C++

Examples: 

Input : s1 = "hello"
        s2 = "geeksforgeeks"
Output : s2 = "hello"

Input :  s1 = "geeksforgeeks"
         s2 = ""
Output : s2 = "geeksforgeeks"

Iterative : 
Copy every character from s1 to s2 starting from index = 0 and in each call increase the index by 1 until s1 doesn’t reach to end; 

C++




// Iterative CPP Program to copy one String 
// to another.
#include <bits/stdc++.h>
using namespace std;
 
// Function to copy one string to other
// assuming that other string has enough
// space.
void myCopy(char s1[], char s2[])
{
    int i = 0;
    for (i=0; s1[i] != '\0'; i++)
       s2[i] = s1[i];
    s2[i] = '\0';
}
 
// Driver function
int main()
{
    char s1[100] = "GEEKSFORGEEKS";
    char s2[100] = "";
    myCopy(s1, s2);
    cout << s2;
    return 0;
}

Java




// Iterative Java Program to copy one String
// to another.
class GFG
{
     
// Function to copy one string to other
// assuming that other string has enough
// space.
static void myCopy(char s1[], char s2[])
{
    int i = 0;
    for (i = 0; i < s1.length; i++)
         s2[i] = s1[i];
}
 
// Driver code
public static void main(String[] args)
{
    char s1[] = "GEEKSFORGEEKS".toCharArray();
    char s2[] = new char[s1.length];
    myCopy(s1, s2);
    System.out.println(String.valueOf(s2));
}
}
 
// This code contributed by Rajput-Ji

Python3




# recursive Python Program to copy one String
# to another.
 
# Function to copy one string to other
def copy_str(x,y):
    if len(y)==0:
        return x
    else:
        c = copy_str(x,(y)[1:-1])
        return c
x = input()
y = input()
print(copy_str(x,y))
 
# This code contributed by deeksha20049@iiid.ac.in
#deeksha20049

C#




// Iterative C# Program to copy one String
// to another.
using System;
 
class GFG
{
     
// Function to copy one string to other
// assuming that other string has enough
// space.
static void myCopy(char []s1, char []s2)
{
    int i = 0;
    for (i = 0; i < s1.Length; i++)
        s2[i] = s1[i];
}
 
// Driver code
public static void Main(String[] args)
{
    char []s1 = "GEEKSFORGEEKS".ToCharArray();
    char []s2 = new char[s1.Length];
    myCopy(s1, s2);
    Console.WriteLine(String.Join("", s2));
}
}
 
// This code is contributed by 29AjayKumar

Javascript




<script>
 
// Iterative Javascript Program to copy one String
// to another.
    
// Function to copy one string to other
// assuming that other string has enough
// space.
function myCopy(s1, s2)
{
    let i = 0;
    for (i = 0; i < s1.length; i++)
         s2[i] = s1[i];
}
 
// Driver code
    // Driver Code
let s1 = "GEEKSFORGEEKS";
let s2 = [];
let index = 0;
 
myCopy(s1, s2, index);
 
document.write(s2.join(""));
 
// This code contributed by shivanisinghss2110
 
</script>
Output: 
GEEKSFORGEEKS

 

Recursive : 
Copy every character from s1 to s2 starting from index = 0 and in each call increase the index by 1 until s1 doesn’t reach to end; 



C++




// CPP Program to copy one String to
// another using Recursion
#include <bits/stdc++.h>
using namespace std;
 
// Function to copy one string in to other
// using recursion
void myCopy(char s1[], char s2[], int index = 0)
{
    // copying each character from s1 to s2
    s2[index] = s1[index];
 
    // if string reach to end then stop
    if (s1[index] == '\0'
        return;
 
    // increase character index by one
    myCopy(s1, s2, index + 1);
}
 
// Driver function
int main()
{
    char s1[100] = "GEEKSFORGEEKS";
    char s2[100] = "";
    myCopy(s1, s2);
    cout << s2;
    return 0;
}

Java




// Java Program to copy one String to
// another using Recursion
class GFG
{
     
    // Function to copy one string in to other
    // using recursion
    static void myCopy(char s1[],
                       char s2[], int index)
    {
        // copying each character from s1 to s2
        s2[index] = s1[index];
 
        // if string reach to end then stop
        if (index == s1.length - 1)
        {
            return;
        }
 
        // increase character index by one
        myCopy(s1, s2, index + 1);
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        char s1[] = "GEEKSFORGEEKS".toCharArray();
        char s2[] = new char[s1.length];
        int index = 0;
        myCopy(s1, s2, index);
        System.out.println(String.valueOf(s2));
    }
}
 
// This code is contributed by PrinciRaj1992

Python3




# recursive Python Program to copy one String
# to another.
 
# Function to copy one string to other
 
 
def copy_str(x, y):
    if len(y) == 0:
        return x
    else:
        c = copy_str(x, (y)[1:-1])
        return c
 
 
x = input("hello")
y = input("no")
print(copy_str(x, y))
 
# This code contributed by deeksha20049@iiid.ac.in

C#




// C# Program to copy one String to
// another using Recursion
using System;
 
class GFG
{
     
    // Function to copy one string in to other
    // using recursion
    static void myCopy(char []s1,
                       char []s2, int index)
    {
        // copying each character from s1 to s2
        s2[index] = s1[index];
 
        // if string reach to end then stop
        if (index == s1.Length - 1)
        {
            return;
        }
 
        // increase character index by one
        myCopy(s1, s2, index + 1);
    }
 
    // Driver Code
    public static void Main(String[] args)
    {
        char []s1 = "GEEKSFORGEEKS".ToCharArray();
        char []s2 = new char[s1.Length];
        int index = 0;
        myCopy(s1, s2, index);
        Console.WriteLine(String.Join("", s2));
    }
}
 
// This code is contributed by Princi Singh

Javascript




<script>
 
// Javascript program to copy one String to
// another using Recursion    
 
// Function to copy one string in to other
// using recursion
function myCopy(s1, s2, index)
{
     
    // Copying each character from s1 to s2
    s2[index] = s1[index];
 
    // If string reach to end then stop
    if (index == s1.length - 1)
    {
        return;
    }
     
    // Increase character index by one
    myCopy(s1, s2, index + 1);
}
 
// Driver Code
var s1 = "GEEKSFORGEEKS";
var s2 = [];
var index = 0;
 
myCopy(s1, s2, index);
 
document.write(s2.join(""));
 
// This code is contributed by gauravrajput1
 
</script>
Output: 
GEEKSFORGEEKS

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :