C - 将大写字母转换为小写

时间:2013-03-29 18:00:24

标签: c

一个非常简单的程序。我只是想把'A'变成'a',但输出给我'A'。

#include <stdio.h>

int main(void) {
    putchar(lower('A')); 

}

lower(a) 
int a; 
{
    if ((a >= 65) && (a >= 90))
        a = a + 32; 
    return a;  
}

10 个答案:

答案 0 :(得分:15)

你弄乱了if条件的第二部分。那应该是a <= 90

另外,仅供参考,有一个C库函数tolower已经执行此操作:

#include <ctype.h>
#include <stdio.h>

int main() {
    putchar(tolower('A'));
}

答案 1 :(得分:4)

我相信你想要&lt; = 90

lower(a) 
int a; 
{
    if ((a >= 65) && (a <= 90))
        a = a + 32; 
    return a;  
}

虽然tolower可能只会为你节省麻烦,除非你自己想要这样做。 http://www.cplusplus.com/reference/cctype/tolower/

答案 2 :(得分:3)

在ASCII中,大写和小写字母彼此相距0x20,因此这是另一种方法。

int lower(int a) 
{
    if ((a >= 0x41) && (a <= 0x5A))
        a |= 0x20; 
    return a;  
}

答案 3 :(得分:2)

确保其正确的一种方法是使用字符而不是ascii代码。

if ((a >= 65) && (a <= 90))

你想要的是降低案件。最好使用if (a >= 'A' && a <= 'Z')之类的东西。您不必提醒所有ascii代码:)

答案 4 :(得分:1)

您可以使用位操作将字符从小写转换为大写,反之亦然,如下所示:

#include<stdio.h>
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;
}

答案 5 :(得分:1)

在ASCII中,大写和小写字母彼此分开为0x20(在ASCII中,0x20为空格''),因此这是另一种实现方式。

int lower(int a) 
{
    return a | ' ';  
}

答案 6 :(得分:0)

#include <stdio.h>
#include <string.h>

int main()
{
    char string[] = "Strlwr in C";

    printf("%s\n",strlwr(string));

    return  0;
}

使用strlwr来降低案例

答案 7 :(得分:0)

如果条件错误。还需要返回较低的类型。

#include <stdio.h>

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;
}

答案 8 :(得分:0)

#include<stdio.h>

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();
}

答案 9 :(得分:0)

使用此代码

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
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<length;i++){
a[i]=a[i]^32;
}
printf("%s",&a);
getch();
}