在C中将char数组转换为大写

标签 c uppercase

<分区>

我试图在 C 语言中将 char 数组转换为大写字母。但它仍然以小写字母打印出来。转换函数中的逻辑对我来说没问题。我不知道问题是否可能是我传递给此函数的输入是结构变量的成员。

这是我要将其成员传递给转换函数的结构:

typedef struct AESParams {
   unsigned char output[192];
} AESParams;

我的转换函数如下图所示:

void stringUpr(char *s)
{
    int i=0;
    while(s[i]!='\0')
    {
        if(s[i]>='a' && s[i]<='z'){
            s[i]=s[i]-32;
        }
        ++i;
    }
}

我调用转换函数如下:

AESParams parameters;
stringUpr(parameters.output);

如果我在调用“stringUpr”函数后打印输出,该值仍然是小写的。任何人都可以告诉我是什么导致了这里的问题吗?

TIA...

更新:将值写入输出的代码。

EVP_EncryptUpdate(&ctx, parameters->output, &outLen, input, length); 
// This call happens in some other file. parameters is passed to the function that calls this function and after computation parameters is passed back to the place where I'm calling stringUpr().

我相信这条线是有效的,并且在计算后会给出正确的结果。只是我想取这个值并转换为大写并写入文件。

最佳答案

您的程序假定它正在使用 ASCII 字符集运行,但我们无法保证这一点。使用 ctype.h

中定义的标准函数
void stringUpr(char* s)
{
    int i = 0;
    while(s[i] != '\0')
    {
        s[i++] = toupper((unsigned char)s[i]);
    }
}

关于在C中将char数组转换为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263071/

相关文章:

c - 读取: separated fscanf in C

c - Shell 似乎可以识别命令但不执行它们

java - 为什么 Java Character.toUpperCase/toLowerCase 没有像 String.toUpperCase/toLowerCase 这样的 Locale 参数

Javascript - 如何连接两个大写单词脚本的第一个字母

string - swift 2 : Iterating and upper/lower case some characters

mysql - 如何在 MySQL 中检查大写字母?

c - 在c中迭代整数数组

c - Void * 转换为 int/char 并替换结果时出现问题

C:搜索和替换/删除

java - 如何在Java中自动将输入字符转换为大写