getchとgetcharにおける改行
Posted: 2014年8月03日(日) 00:19
入力した文字を区別して、文字数を表示するというプログラムを作りました。
Enterキーを押すと、do-whileを抜けだして、文字の個数を表示します。
このプログラムを作っている最中に気づいたのですが
getchar関数を使っているときはEnterキーを押すと(\n)が入力されます
getch関数を使っているときはEnterキーを押すと(\r)が入力されます
EnterキーはCR(carriage return)=復帰を意味するキーだとは聞いたのですが
それなら何故getch,getcharも(\r)で統一しないのしょうか?
何故このような違いがでるのでしょうか?
教えてくださいお願いします。
OSはWindows7です
また参考として下にプログラムを記しておきます。
#include <stdio.h>
#include <conio.h>
int main(void){
int kazu=0,eji=0,kugiri=0;
char ch;
do{
ch=getche();
switch(ch){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
kazu++;
break;
case ',':
case '.':
kugiri++;
break;
default:
eji++;
break;
}
}while(ch !='\r');
printf("\n数字は%d個\n英字は%d個\n区切り文字は%d個\n",kazu,eji,kugiri);
return 0;
}
Enterキーを押すと、do-whileを抜けだして、文字の個数を表示します。
このプログラムを作っている最中に気づいたのですが
getchar関数を使っているときはEnterキーを押すと(\n)が入力されます
getch関数を使っているときはEnterキーを押すと(\r)が入力されます
EnterキーはCR(carriage return)=復帰を意味するキーだとは聞いたのですが
それなら何故getch,getcharも(\r)で統一しないのしょうか?
何故このような違いがでるのでしょうか?
教えてくださいお願いします。
OSはWindows7です
また参考として下にプログラムを記しておきます。
#include <stdio.h>
#include <conio.h>
int main(void){
int kazu=0,eji=0,kugiri=0;
char ch;
do{
ch=getche();
switch(ch){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
kazu++;
break;
case ',':
case '.':
kugiri++;
break;
default:
eji++;
break;
}
}while(ch !='\r');
printf("\n数字は%d個\n英字は%d個\n区切り文字は%d個\n",kazu,eji,kugiri);
return 0;
}