I get a warning
warning: comparison between pointer and integer
on the line containing if from the next piece of code:
         
        The prototype of getcwd is
char *getcwd(char *buf, size_t size);
Make sure you include <unistd.h> otherwise the return type would default to int.
Here, even Ideone gives its Current Working Directory
have you included the .h necessary so that the compiler understands what getcwd returns?
the behavior of your c compilers is probably to assume an int return value from every undefined function.
Modify line with this one if (getcwd(cwd, sizeof(cwd)) != NULL)
Do you include unistd.h? If not, the error appears because your C compiler is assuming getcwd returns int.
The fix? Include unistd.h
In the return types section of the following link, getcwd returns null on failure.  Thus, instead of checking for != (char *)NULL just check for != NULL
http://linux.die.net/man/3/getcwd