PDA

View Full Version : #define password "abc\n"


jackall
09-05-2008, 09:14 AM
My acquaintance with any language or coding is almost imaginary. This following code by an eminent personality used in his book, got on my meager imagination and made me feel again my inadequacies in this ground.

The level of my comprehensibility is ridiculed by these five characters “abc\n”.

#include<stdio.h>
#include<string.h>
#define Length 100
#define password "abc\n"

int main()
{
char buff[Length];
int count=0;
for(;;)
{
printf("Enter password\n");
fgets(&buff[0] , Length ,stdin);
if(strcmp(&buff[0], password))
printf("\nWRONG...\n");
else break;
if(++count>2)
return -1;
}
printf("CORRECT");
}
When prompted, i enter the password abc\n, I get WRONG message. If i remove the \n from #define password “abc”, again i get WRONG message no matter whatever the input is?

Of course the code gives CORRECT response when the string “abc” is entered.
Could i get a little explanation on this (#define password “abc\n”) ?

Thank you...

Git
09-05-2008, 10:15 AM
\n is C language for carriage return/enter. If you read a book on C you will learn that very early, and you clearly need to read a book on C !

Git

kodyazan
09-06-2008, 06:22 AM
if you only want "abc" without enter (\n), you may use
gets(&buff[0]);
instead of
fgets(&buff[0] , Length ,stdin);

--Editing--
And be carefull when using gets().

If someone enters 500 characters, your program above, will -mostly- crash.
(gets() doesn't check buffer overflow. fgets() is safer).

jackall
09-06-2008, 01:19 PM
Thank you …kodyazan
Yes...i will try to understand in depth what you have explained...

Regards…