c - 尝试在不使用函数的情况下在 C 中将大写字符转换为小写字符

标签 c arrays uppercase lowercase

我试图在不使用函数的情况下将 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/

相关文章:

mysql - C编译器找不到头文件

c - 我的 C 中链表成对交换代码有什么问题?

javascript - 在 Acrobat Javascript 中从 XML 数据创建数组时遇到问题,如果可以的话请提供帮助

r - 获取R中字符串第一个大写字母的索引?

python-3.x - 字符串未更改为大写

c - 在 C 文件中写入和打印数组中的字符串

c - 需要有关基本 ASM 的帮助

C++ |为什么执行这个程序后我会得到奇怪的字符?

c++ - 字符串作为指针与数组

Javascript - 将字符串中的所有字母转换为大写或小写