所以我在char *上使用toupper有一个问题。让我给你看看我试过的。
#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;
}
语句
toupper((unsigned char) *shi);
无效。不使用toupper
的调用结果
在while loop
之后while(*shi) {
toupper((unsigned char) *shi);
shi++;
}
指针shi
指向字符串的结束字符' ' ..所以下面调用printf
printf("Capitalized version is: %s",shi);
将处理空字符串。
你应该写
for ( char *p = shi; *p; ++p ) {
*p = toupper((unsigned char) *p);
}