【发布时间】:2015-05-08 15:30:23
【问题描述】:
我试图在不使用函数的情况下将 char *argv[] 数组中的 char 元素从大写转换为小写。我想在 ascii 整数上加 32。
当我尝试将变量作为参数传递时,它会显示整数和,但不会显示新的小写字符。相反,它显示以下输出:
letter h, 104
tolower: 136, �
代码:
int i = 0;
for(i = 0; argv[1][i] != '\0'; i++) {
char letter = argv[1][i];
printf("letter %c, %i\n", letter, letter);
char tolower = argv[1][i];
int lowercase = tolower + 32;
printf("tolower: %i, %c\n", lowercase, lowercase);
}
为什么要打印“?”字符?
【问题讨论】:
-
不要调用变量
tolower它是标准函数的名称。 -
h已经是小写了。 -
你必须检查
letter >= 'A' && letter <= 'Z'
标签: c arrays uppercase lowercase