すべてのカテゴリ » 知識・教養・学問 » 知識・学問 » 芸術・言語・文学

質問

終了

C言語を勉強中ですが、toupperやtolowerの関数を使わずに、ローマ字の大文字を小文字に、小文字は変換せずに小文字のままに表示させるプログラムの作り方がわかりません。(例 ABcdEFgh → abcdefgh になるように) どなたかお教えください。

  • 質問者:C言語苦手
  • 質問日時:2010-08-17 23:56:46
  • 0

回答してくれたみんなへのお礼

ありがとうございました。回答を参考に作ってみたら、うまくいきました。

#include<stdio.h>

int main(void)
{
char str[128];
int i;
printf("文字列を入力:");
gets(str);



for(i=0; str[i]!='\0'; i++){
if(str[i]>='A' && str[i]<='Z')
str[i]+='a'-'A';
}
puts(str);

return 0;
}

ありがとうございました。  (●^∇^●)/

★ヒント★

英字大文字は、ASCII コードで 0x41 ~ 0x5a
英字小文字は、ASCII コードで 0x61 ~ 0x7a

コード値の差分を 加減算でも良いし、ビット演算(And Or ExOr 演算)でもよい。
ASCII コードでなく、Unicodeで計算するときにも基本的に同じ

以上です。(後は考えて!)

  • 回答者:匿名 (質問から43分後)
  • 2
この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。

並び替え:

基本は下の方が書いてる通り0xDFでAND掛けちゃうことだね。

もっとも、これはCというよりアセンブラやHDLでよくやるやり方だけど。

もっとも0x30~39も当然使うだろうし、条件文を一つ噛まさないと使い勝手悪いソースになるよ。

  • 回答者:とくめい (質問から14時間後)
  • 0
この回答の満足度
  
参考になりました。回答ありがとうございました。

関連する質問・相談

Sooda!からのお知らせ

一覧を見る