【发布时间】:2019-03-20 14:23:13
【问题描述】:
我正在尝试在 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().
我相信这条线可以正常工作,并且在计算后会给出正确的结果。只是我想把这个值转换成大写写入文件。
【问题讨论】:
-
为什么不能使用 toupper?
-
设置和打印
parameters的邮政编码。 -
parameters是 typedef 和变量?你编码works。 -
由于您有两个不同的变量称为
parameters(一个是结构,另一个是指针),您确定将正确的东西传递给strUpper?