And*_*nir 0 c ascii lowercase uppercase
我正在尝试使用 ASCII 表将所有小写字母转换为大写字母!这很容易处理,我已经弄清楚了代码。问题是,如果单词之间有空格,那么程序只会更改第一个单词,而在空格之后不会打印任何内容。
示例
词:Andreas 给出:ANDREAS
词:TeSt123Ha 给出:TEST123HA
但是!!!
字:你好 45 给出:你好
,在空格之后它什么都不打印!
我知道 ASCII 表中的空间等于 32,在我的代码中我告诉程序,如果您正在阅读的当前代码不在 97 和 122 之间,那么不要执行任何更改!
但它仍然无法正常工作!
char currentletter;
int i;
for (i=0; i<49; i++)
{
currentletter = str[i];
if ((currentletter > 96) && (currentletter < 123))
{
char newletter;
newletter = currentletter - 32;
str[i] = newletter;
}
else
{
str[i] = currentletter;
}
}
printf("%s\n", str);
Run Code Online (Sandbox Code Playgroud)
小智 7
翻转第 5 个最低位应该会有所帮助。
每个小写字母等于 32 + 大写字母。这意味着简单地翻转位置 5 处的位(从位置 0 处的最低有效位开始计数)会反转字母的大小写。 https://web.stanford.edu/class/cs107/lab1/practice.html
char *str;
int str_size = sizeof(str);
for(int i=0; i<str_size;i++){
if((str[i]>96) && (str[i]<123)) str[i] ^=0x20;
}
Run Code Online (Sandbox Code Playgroud)