Copy of a string

Posted on 2011-03-05
Medium Priority
Last Modified: 2012-05-11
Please tell me how I can make a copy of a given string, at run time.

If my function takes char *str as a parameter, then I want make a local copy of str within the function.

Question by:dshrenik
LVL 16

Expert Comment

by:Peter Kwan
ID: 35043582

Author Comment

ID: 35043593
I don't want to use library functions.

Will it work if I find the length of the string, then dynamically allocate a char array and assign its value to the original?

If possible, please provide some sample code.

LVL 16

Accepted Solution

Peter Kwan earned 668 total points
ID: 35043670
You can do it this way (pseudo-code only):
char *new_str;
int i = 0;
new_str = (char*) malloc(sizeof(char));
new_str[i] = orig_str[i];
while (orig_str[i] != NULL) {
     new_str = (char*)realloc(new_str, (i+2)*sizeof(char));
     new_str[i] = orig_str[i];

Open in new window

LVL 11

Assisted Solution

by:Deepu Abraham
Deepu Abraham earned 668 total points
ID: 35044187
another way if implementing this . here is the snippet
char* strcpy_new(char* dest,const char* source)
	if ((dest == NULL)|| (source == NULL))
		return NULL;
        //if you know the length then you could check it here..
	int i = 0;
		dest[i] = source[i];
	if(dest[i] != '\0')
		dest[i] = '\0';

	return dest;

Open in new window


Assisted Solution

hogwell earned 664 total points
ID: 35047085
// A simpler, more efficient version that creates a copy of the input string on the heap.
char* copy_a_string(const char *str)
    const char *str1=str;
    size_t len;
    char *copy_of_str;
    char *str2;
    while (*str1) ++str1;
    len = str1 - str;
    copy_of_str = (char*) malloc((len+1)*sizeof(char)); // Or use "copy_of_str = new char[len+1];" in C++
    for (str1=str,str2=copy_of_str; *str1; )
      *str2++ = *str1++;
    *str2 = '\0';
    return copy_of_string;

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a G…
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

600 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question