Solved

# Copy of a string

Posted on 2011-03-05
272 Views
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.

Thanks!
0
Question by:dshrenik

LVL 16

Expert Comment

ID: 35043582
0

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.

Thanks!
0

LVL 16

Accepted Solution

Peter Kwan earned 167 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];
i++;
}
new_str[i]=0;
``````
0

LVL 11

Assisted Solution

DeepuAbrahamK earned 167 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;
while(source[i]!='\0')
{
dest[i] = source[i];
i++;
}
if(dest[i] != '\0')
dest[i] = '\0';

return dest;
}
``````
0

LVL 1

Assisted Solution

hogwell earned 166 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;
}
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you thought about creating an iPhone application (app), but didn't even know where to get started? Here's how: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Important pre-programming comments: I’ve never tri…
Introduction This article is a continuation of the C/C++ Visual Studio Express debugger series. Part 1 provided a quick start guide in using the debugger. Part 2 focused on additional topics in breakpoints. As your assignments become a little more …
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.