Reverse Engineering Team Board

Reverse Engineering Team Board (
-   Reverse Code Engineering (
-   -   #define password "abc\n" (

jackall 09-05-2008 09:14 AM

#define password "abc\n"
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”.


#define Length  100
#define password  "abc\n"

int main()
    char buff[Length];
    int count=0;
        printf("Enter password\n");
        fgets(&buff[0] , Length ,stdin);
        if(strcmp(&buff[0], password))
        else break;
        return -1;

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 !


kodyazan 09-06-2008 06:22 AM

if you only want "abc" without enter (\n), you may use
instead of
fgets(&buff[0] , Length ,stdin);

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...


All times are GMT -4. The time now is 12:55 AM.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.