実にシンプルなプログラム。「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;
}
実にシンプルなプログラム。「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;
}
条件の 2 番目の部分を台無しにしましたif
。それはする必要がありますa <= 90
。
また、参考までに、tolower
既にこれを行う C ライブラリ関数があります。
#include <ctype.h>
#include <stdio.h>
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;
}
正しいことを確認する 1 つの方法は、ASCII コードの代わりに文字を使用することです。
if ((a >= 65) && (a <= 90))
あなたが望むのは、ケースを下げることです。のようなものを使用することをお勧めしますif (a >= 'A' && a <= 'Z')
。すべてのASCIIコードを思い出す必要はありません:)
以下に示すように、ビット操作を使用して、文字を小文字から大文字に、またはその逆に変換できます。
#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;
}
ASCII では大文字と小文字のアルファベットは 0x20 (ASCII では 0x20 はスペース ' ') 離れているため、これは別の方法です。
int lower(int a)
{
return a | ' ';
}
コンディションが悪い場合。下位の戻り型も必要です。
#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;
}
#include <stdio.h>
#include <string.h>
int main()
{
char string[] = "Strlwr in C";
printf("%s\n",strlwr(string));
return 0;
}
大文字と小文字を区別するには strlwr を使用します
このコードを使用
#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();
}