Archived

This topic is now archived and is closed to further replies.

Something that seems strange

Recommended Posts

Well, i got kinda bored today so i made a simple program that prompts for input and does something, kinda like the dos console(i was bored). Anyway, it compiled fine, but when i type in a command it crashed, in both linux(using kdevelop) and windows xp(using vc++ 6 intro)(i run both). i got a segmentation fault in linux and in xp i simply get this program has encountered a problem and needs to close(real helpful)


#include <iostream.h>

int main(int argc, char* argv[])
{
char* input;

cout << "welcome" << endl;
cout << "USER:>";

while(1)
{
cin >> input;

if( input=="start" )
{
cout << "starting" << endl;
}
else if( input=="quit" )
{
cout << "Authorize Exit" << endl;
cout << "EXIT:>";
cin >> input;
if( input=="ark" )
{
cout << "Authorization Confirmed, exiting" << endl;
return 0;
}
else
{
cout << "Invalid Authorization Code, unable to exit";
}
}

else
{
cout << "Invalid Command" << endl;
}

cout << "USER:>";
}

return 0;
}


if i changed char* input to char input[20] (or some other number) it didn''t crash but it kept giving me my Invalid Command line, i''ve done input like this before and it''s worked. I just can''t get it to work, though it isn''t important. thx, in advance for any help.

Share on other sites
just change input to use a std::string instead of a char*

[edited by - daerid on April 29, 2002 1:53:20 AM]

Share on other sites
thx for the help.

i also had the change the char* to char input[some number] or it still crashed

Share on other sites
quote:
i also had the change the char* to char input[some number] or it still crashed

Dynamic memory allocation. char * is just a pointer to a block of memory; you have to actually ask for the block. char [] is a fixed size block of memory ( &(char [0]) is a char *, to illustrate).

You might also want to look into the STL std::string class if you''re using C++, which has much more natural syntax (like str1 == str2, etc) among other benefits.

[ GDNet Start Here | GDNet Search Tool | GDNet FAQ ]
[ MS RTFM [MSDN] | SGI STL Docs | Boost ]
Thanks to Kylotan for the idea!

Share on other sites
I think you cannot compare the variable input with a constant string that way... (input is a pointer to char, so you are comparing a memory address with a constant string!). Of course, this explanations works well in C, but I''m not sure if in C++ you can do it (please, point me at this point).

And one observation/comment (not related directly with your question): If you replace "while (1)" by "for (;" you avoid one comparision. It isn''t very relevant; I just thought about it when I saw the code.

theNestruo

Syntax error in 2410
Ok

look up strcmp()

• Forum Statistics

• Total Topics
628375
• Total Posts
2982318

• 10
• 9
• 14
• 24
• 11