I am trying to \"trap\" keyboard inputs from user, meaning the code will prevent them from entering certain characters, which in this case prevents the input of numbers and spec
Memory always contains something. The space used by your variable contains something, and calling strlen() on that just so happens not to blow up somewhere.
Note that the operating system usually reads a full line (and allows editing it), shipping it to the reading application only on ENTER. To handle this is significatly harder than plain reading. Are you sure that it isn't good enough to get a line, check it and complain or go ahead?
since your buffe will get memory on stack it will contain some garbage value you better initialize it with zero or better way is to use memset() function.
Reading uninitialised variables like done to buffe
here:
if (c1=='\r' && strlen(buffe)==0)
provokes undefined behaviour, anything could happen afterwards. Do not do this.
Always initialise variable before reading them.
In this case you might like to simply do:
char buffe[32] = "";
or (as already proposed by others) the more generic way:
char buffer[32] = {0};
More complicated but also valid would be to do:
char buffer[32];
strcpy(buffe, "");
or
char buffer[32];
memset(buffe, 0, sizeof(buffe));
May be try
char buffe[30] = {0};
(I have not tried this thouggh)