我试图在不使用函数的情况下将 char 元素从 char *argv[] 数组从大写字母转换为小写字母。我想将 32 添加到 ascii 整数。
当我尝试将变量作为参数传递时,它会显示整数和,但不会显示新的小写字符。相反,它显示以下输出:
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);
}
为什么要打印一个“?”字符?
最佳答案
首先,不要假设您使用的是 ascii 字符集(即 32 在某些字符集中是错误的附加值)。您遇到的问题是“h”+ 32 不是小写的“h”。 'h' 已经是小写字母,所以你想添加 0。检查它;像这样的东西:
if( tolower >= 'A' && tolower <= 'Z' )
tolower += 'a' - 'A';
关于c - 尝试在不使用函数的情况下在 C 中将大写字符转换为小写字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28908748/