void main(){
char *temp1;
sprintf(temp1,"STUFF");
puts(temp1);
char *temp2;
sprintf(temp2,temp1);
puts(temp2);
}
char* prob
hello,
My problem is this, I want to create a string, copy a string into that string and copy that string into another string...you follow me still? I've got some code down, but it crashes once i create the second string.
I tried commenting out the strcpy and puts at the end but it still crashes, it works fine if i don't create the second temp2 variable. I've also tryed using malloc(...) and free(...), but they don't seem to do anything usefull. I am using MSCV++ 6.0, and building in release mode. Your help will be appreciated!!!
Edited by - ph4ntasyph34r on March 18, 2002 10:41:42 PM
/* This is a comment *//* Abuse it */
Easy!
MWAHAHAHAHAHA!!!
#Hehehe more Python advocacy!string_1="Whatever"string_2=string_1string_1+=string_1
MWAHAHAHAHAHA!!!
---START GEEK CODE BLOCK---GCS/M/S dpu s:+ a---- C++ UL(+) P(++) L+(+) E--- W++ N+ o K w(--) !O !M !V PS- PE+Y+ PGP+ t 5 X-- R tv+ b+ DI+ D G e* h! r-- !x ---END GEEK CODE BLOCK---
When you do char *temp1; all you're doing is creating a pointer. You're not creating any space for your string. Change that to char temp1[40]; or something, depending on how much space you need. If you really want a pointer you can go
char *temp1;
temp1 = new char[40];
...
delete [] temp1;
That way you're allocating enough memory for the string.
[edited by - Tron3k on March 18, 2002 10:50:50 PM]
[edited by - Tron3k on March 18, 2002 10:51:33 PM]
char *temp1;
temp1 = new char[40];
...
delete [] temp1;
That way you're allocating enough memory for the string.
[edited by - Tron3k on March 18, 2002 10:50:50 PM]
[edited by - Tron3k on March 18, 2002 10:51:33 PM]
“[The clergy] believe that any portion of power confided to me, will be exerted in opposition to their schemes. And they believe rightly: for I have sworn upon the altar of God, eternal hostility against every form of tyranny over the mind of man” - Thomas Jefferson
couldnt you use this?
// Gets the message from the user.
con << "Enter your secret message: " << ''\n'';
// This is the max input including the null terminator available.
const int NameSize = 500;
// Declares the message string.
char message[NameSize];
// Initializes the message string.
cin.get(message, NameSize);
cin.get();
// Computes the message / by 2 and adds 1 if it is an odd message.
int x = (strlen(message) + 1);
// Declares the first half of message.
char *string1 = new char[x + 1]; // Add one for the null terminator.
strcpy(string1,message);
// Declares the second half of message.
char *string2 = new char[x + 1];
// Initializes the second half of message.
strcpy(string2, string1);
// Declares the second half of message.
char *string3 = new char[x + 1];
// Initializes the second half of message.
strcpy(string3, string2);
con << ''\n'' << "Your message is: " << string3;
// Clears the message.
delete []string1;
delete []string2;
delete []string3;
Sorry about the long code but this is only my 2nd week in c++ class.
// Gets the message from the user.
con << "Enter your secret message: " << ''\n'';
// This is the max input including the null terminator available.
const int NameSize = 500;
// Declares the message string.
char message[NameSize];
// Initializes the message string.
cin.get(message, NameSize);
cin.get();
// Computes the message / by 2 and adds 1 if it is an odd message.
int x = (strlen(message) + 1);
// Declares the first half of message.
char *string1 = new char[x + 1]; // Add one for the null terminator.
strcpy(string1,message);
// Declares the second half of message.
char *string2 = new char[x + 1];
// Initializes the second half of message.
strcpy(string2, string1);
// Declares the second half of message.
char *string3 = new char[x + 1];
// Initializes the second half of message.
strcpy(string3, string2);
con << ''\n'' << "Your message is: " << string3;
// Clears the message.
delete []string1;
delete []string2;
delete []string3;
Sorry about the long code but this is only my 2nd week in c++ class.
If you''re going to bother to use C++, use std::string and std::getline.
[ GDNet Start Here | GDNet Search Tool | GDNet FAQ | MS RTFM [MSDN] | SGI STL Docs | Google! ]
Thanks to Kylotan for the idea!
[ GDNet Start Here | GDNet Search Tool | GDNet FAQ | MS RTFM [MSDN] | SGI STL Docs | Google! ]
Thanks to Kylotan for the idea!
OH, I see what I did.
I allocated memory, just not the right amount
Thx for your help !
I allocated memory, just not the right amount
Thx for your help !
/* This is a comment *//* Abuse it */
March 18, 2002 10:58 PM
If your programming in C++, save yourself a lot of time and pain and use std::string e.g.
This is much more robust than any C example you could come up with. For example, you don''t have to worry about dynamic memory or buffer overruns.
#include <string>#include <iostream>int main(){ std::string string1 = "String"; std::string string2 = " concatenation."; std::string string3 = string1 + string2; std::cout << string3 << std::endl; // Makes MSVC++ 6 happy return 0;}
This is much more robust than any C example you could come up with. For example, you don''t have to worry about dynamic memory or buffer overruns.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement