So I have a problem with using toupper on char *. Let me show you what I tried.
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main() {
char* shi = command->args[0]; //which is "binance"
while(*shi) {
toupper((unsigned char) *shi);
shi++;
}
printf("Capitalized version is: %s",shi); // which should be "BINANCE".
return 0;
}
This statement
toupper((unsigned char) *shi);
has no effect. The result of the call of toupper
is not used.
Also after this while loop
while(*shi) {
toupper((unsigned char) *shi);
shi++;
}
the pointer shi
points to the terminating character '\0' of the string.. So the following call of printf
printf("Capitalized version is: %s",shi);
will deal with an empty string.
You should write for example
for ( char *p = shi; *p; ++p ) {
*p = toupper((unsigned char) *p);
}