C – 将大写字母转换为小写
一个非常简单的程序。 我只是想把’A’变成’a’,但输出给我’A’。
#include int main(void) { putchar(lower('A')); } lower(a) int a; { if ((a >= 65) && (a >= 90)) a = a + 32; return a; }
你弄乱了if
条件的第二部分。 那应该是a <= 90
。
此外,仅供参考,有一个C库函数tolower
已经这样做:
#include #include int main() { putchar(tolower('A')); }
我相信你想要<= 90
lower(a) int a; { if ((a >= 65) && (a <= 90)) a = a + 32; return a; }
虽然tolower可能只会为你节省麻烦,除非你想自己这样做。 http://www.cplusplus.com/reference/cctype/tolower/
在ASCII中,大写和小写字母彼此相距0x20,因此这是另一种方法。
int lower(int a) { if ((a >= 0x41) && (a <= 0x5A)) a |= 0x20; return a; }
确保它是正确的一种方法是使用字符而不是ascii代码。
if ((a >= 65) && (a <= 90))
你想要的是降低案件。 最好使用if (a >= 'A' && a <= 'Z')
东西if (a >= 'A' && a <= 'Z')
。 你不必提醒所有ascii代码:)
您可以使用位操作将字符从小写转换为大写,反之亦然,如下所示:
#include int main(){ char c; printf("Enter a character in uppercase\n"); scanf("%c",&c); c|=' '; // perform or operation on c and ' ' printf("The lower case of %c is \n",c); c&='_'; // perform 'and' operation with '_' to get upper case letter. printf("Back to upper case %c\n",c); return 0; }
#include #include int main() { char string[] = "Strlwr in C"; printf("%s\n",strlwr(string)); return 0; }
使用strlwr降低案例
如果条件错了。 还需要返回类型为lower。
#include int lower(int a) { if ((a >= 65) && (a <= 90)) a = a + 32; return a; } int _tmain(int argc, _TCHAR* argv[]) { putchar(lower('A')); return 0; }
#include void main() { char a; clrscr(); printf("enter a character:"); scanf("%c",&a); if(a>=65&&a<=90) printf("%c",a+32); else printf("type a capital letter"); getch(); }
使用此代码
#include #include #include void main(){ char a[10]; clrscr(); gets(a); int i,length=0; for(i=0;a[i]!='\0';i++) length+=1; for(i=0;i