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