|
|
omg thanks been looking for a simple way like that!!!!
|
|
|
|
|
Cool...that is easy!
Thanx Mike!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
I wish we could rate these posts like you can at CodeGuru - what a helpful post!
|
|
|
|
|
Please help, whats wrong with this code?
"if statment"
char r;
gets(r);
if (r == "ok")
{
cout << ("good job");
}
What wrong with that? how can i make it work?
Thanks!
~SilverShalkin
ps... im new to this forum, so if you see another thread like this one, im sorry
didnt mean to.
Programming is an art, dont spoil it with work.
|
|
|
|
|
Uh, a lot. First of all, "char" is a single character, not a whole string. You need to do an char array for a complete string, or use a CString from MFC. Second, you can't compare char arrays with the "==" symbol, you need to use "strcmp" ("==" does work for CStrings however).
So, correct code would look something like this:
char r[256]; //note that if user inputs more than 255 characters, program might crash
gets(r);
if(strcmp(r,"ok")==0)
{
cout << ("good job");
}
Cya (c:
|
|
|
|
|
Lofote wrote:
or use a CString from MFC.
Or in this case, use std::string seeing as MFC is not being used anywhere else in the code.
Lofote wrote:
Second, you can't compare char arrays with the "==" symbol,
Really ?
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
|
|
|
|
|
you cant compare char arrays with "==", then how do you do it?
Thanks
~SilverShalkin
What little life a rose may give, its the buety that will last forever.
|
|
|
|
|
With the strcmp() function.
Jon Sagara
What about ?
Sonork ID: 100.9999 jonsagara
|
|
|
|
|
Jon Sagara wrote:
With the strcmp() function.
or even lstrcmp(), if you want to use the Win32 api to do it.
impuzible
|
|
|
|
|
or _tcscmp().
Jon Sagara
What about ?
Sonork ID: 100.9999 jonsagara
|
|
|
|
|
I always liked being nice the the user...
_tcsicmp
Tim Smith
I know what you're thinking punk, you're thinking did he spell check this document? Well, to tell you the truth I kinda forgot myself in all this excitement. But being this here's CodeProject, the most powerful forums in the world and would blow your head clean off, you've got to ask yourself one question, Do I feel lucky? Well do ya punk?
|
|
|
|
|
Bah - let 'em suffer, I say!
Jon Sagara
What about ?
Sonork ID: 100.9999 jonsagara
|
|
|
|
|
Ultimately, char arrays are ugly C, and also not safe, as has been noted. You'll end up using CString or std:string just like everyone else, but for some reason the books all take a low to high approach which shows you the std library AFTER you've learned things the unnecessarily hard way.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
|
|
|
|
|
People should still learn how to use C strings. They are very powerful and VERY safe when used properly.
Tim Smith
I know what you're thinking punk, you're thinking did he spell check this document? Well, to tell you the truth I kinda forgot myself in all this excitement. But being this here's CodeProject, the most powerful forums in the world and would blow your head clean off, you've got to ask yourself one question, Do I feel lucky? Well do ya punk?
|
|
|
|
|
Tim Smith wrote:
People should still learn how to use C strings.
Absolutely - I just dispute the idea they should learn it first...
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
|
|
|
|
|
Woops, my fault then. I misunderstood you.
Tim Smith
I know what you're thinking punk, you're thinking did he spell check this document? Well, to tell you the truth I kinda forgot myself in all this excitement. But being this here's CodeProject, the most powerful forums in the world and would blow your head clean off, you've got to ask yourself one question, Do I feel lucky? Well do ya punk?
|
|
|
|
|
Lofote wrote:
char r[256]; //note that if user inputs more than 255 characters, program might crash
gets(r);
if(strcmp(r,"ok")==0)
{
cout << ("good job");
}
Thanks man, although i did change the character memory amount to 255. The if statment worked!
This is awesome, thank you allot. Ill let the help files help me with how it works, and i may see you all later.
~SilverShalkin
The perfect puzzle, Programming.
|
|
|
|
|
Why did you change the buffer size to 255?
Is it really likely that your user will enter exactly 254 charcters but no more?
(remember, with char arrays for strings, you always need one more byte than the number of characters you plan to store. convention is to terminate strings with a 0 (aka NULL). All the LIBC functions (strcat,strcmp,strlen etc etc) depend on that.)
Sorry to dissapoint you all with my lack of a witty or poignant signature.
|
|
|
|
|
SilverShalkin wrote:
char r[256];
if (r == "ok")
To answer your original question, that code compiles because both sides of the comparison can be converted to the same type.
"ok" is of type char*
r can be converted to char* through language rules. A one-dimensional array can be implicitly converted to a pointer to the element type, so char[] becomes char* . Voilà.
--Mike--
Best score on the mini-putt game: 26
My really out-of-date homepage
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan and Jamie Salé.
|
|
|
|
|
I stand corrected.
|
|
|
|
|
I was wondering if someone out there could help me out. Why wont the
following code work
//I have a clistctrl as member variable of the following dialog and want
//to catch messages sent from the clistctrl within this dialog
BOOL TVC_RC_Dlg::OnChildNotify( UINT message, WPARAM wParam,
LPARAM lParam, LRESULT* pLResult)
{
switch ( message ) {
//this case is just an example of one
//of the many im after
case LVN_BEGINLABELEDIT: //Or any other msg sent from a clistctrl
return 0; //Execution never gets here
break;
default :
break;
}
return CDialog::OnChildNotify(message, wParam, lParam, pLResult);
}
Thanks to anyone who can help, or anyone who even read my question
lm
|
|
|
|
|
OnChildNotify would be executed on the list control itself, not it's parent dialog. Use OnNotify instead.
|
|
|
|
|
I have designed a control currently derived from CView, but i'm gonna convert it to a CWnd instead. However I would like to later wrap the CWnd control in a CView like CTreeCtrl is with CTreeView.
How would I go about doing this...
Where is the implementation for CTreeView...?
learn from example kinda thing. It looks like the CView wrappers just return a reference to the CWnd control, which seems simple enough.
Anybody got any suggestions for me..?
Thanx!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
IMHO it handles WM_SIZE message and resize control accordingly
|
|
|
|