c - 如何通过更改其 ascii 值来更改变量的值?

标签 c

  /*change the case of each alphabet in this String. */ 
 #include <stdio.h>
 #include<string.h>

int main()
{
char a[100],b,c;
int i;
scanf("%s",a);
int len=strlen(a);
for(i=0;i<len;i++)

    {    c=a[i];
         b='c';
        if(b<91)
         b=b+32;
        else if(b>96)
          b=b-32;
        'c'=b;   /*error*/
         a[i]=c;
}

printf("%s",a);    

 return 0;
}

我想将字符串的每个变量更改为相应的大写或小写(例如输入:adsE 输出:ADSe) 所以我通过改变变量的 ASCII 值来尝试它, 但我无法将新的 ASCII 值放回原始变量。 我应该怎么做?

最佳答案

首先,变量c 和字符'c' 无论如何都不相关。您可以像 c = 'a' 一样分配给 c 但您不能分配给 'c' - 就像您不能分配一样到一个数字,例如9 = 42 将失败。

但是,没有必要使用变量bc。直接对a进行操作即可。喜欢

    if (a[i] < 91)
         a[i] = a[i] + 32;
    else if (a[i] > 94)    // Hmm, should this be 96?
        a[i] = a[i] - 32;

您可以像这样改进代码:

    if ((a[i] >= 'A') && (a[i] <= 'Z'))
         a[i] = a[i] + 32;
    else if ((a[i] >= 'a') && (a[i] <= 'z'))
        a[i] = a[i] - 32;

关于c - 如何通过更改其 ascii 值来更改变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41522289/

相关文章:

c - 我应该如何管理 C block 功能的内存? (苹果扩展)

c++ - 在 read() 上阻塞时线程 'disappears' 我该如何调试它?

c - Printf ("%d"的结果,&a)

对 char 和 char * 感到困惑,并在单词中扫描

c++ - unix 上可生成 xml 输出的 c++ 代码复杂性分析

c - 'getContent' : not all control paths return a value "

c - 如何删除包含用户在文件中提供的字符串的整行

c - 这4K有什么区别?

c - 从 C 中的文件行中提取信息

c++ - Visual C++ 上的 _nextafterf