マンガでよめる痔のこと・薬のこと

このコードをmain関数とキーコントロール関数とに分けたところ、
キーのレスポンスがわるくなりました。
このソースコードをどのように分割すれば一つのファイルで書いたように、
動いてくれるのかわかりません。
よろしくお願いします。

/* 分割前のソースコード */
#include <stdio.h>
#include <conio.h>

int main(int argc, char *argv[]){
int key=0;
while(key!='q'){ //終了キー 'q'
key=_getch();
//Keyによって分岐
switch((key == 0x00 || key == 0xe0) ? _getch(): key) {
case 0x48:printf("上");break;//上
case 0x50:printf("下");break;//下
case 0x4b:printf("左");break;//左
case 0x4d:printf("右");break;//右
default:break;
}
}
return 0;
}
/*--ここから下が分割してみたソースコード---*/

/* arrowkey.h */
#ifndef ARROWKEY_H
#define ARROWKEY_H
int arrowkey(void);
#endif //ARROWKEY_H

/*---------------------------------*/
/* arrowkey.c */
#include <stdio.h>
#include <conio.h>
#include "arrowkey.h"

int arrowkey(void){
int key=_getwch();
//Keyによって分岐
switch((key == 0x00 || key == 0xe0) ? _getch(): key) {
case 0x48:printf("上");break;//上
case 0x50:printf("下");break;//下
case 0x4b:printf("左");break;//左
case 0x4d:printf("右");break;//右
case 0x71:break;//終了
default:break;
}
return key;
}

/*---------------------------------*/
/* main.c */
#include "arrowkey.h"

int main(int argc, char *argv[]){
int key=0;
while(key!='q'){ //終了キー 'q'
key=arrowkey()
}
return 0;
}

A 回答 (1件)

分割前


key=_getch();
分割後
key=_getwch();

分割の前後でここの関数を変えたのは何故でしょうか。

この回答への補足

MSDNを見ていたらアンダーバー付きばかりだったので、いろいろ試してみてたのですが、どれも同じ反応だったのでそのままで投稿してしまいました。

補足日時:2014/12/01 23:56
    • good
    • 0
この回答へのお礼

知って記された部分を直したら、ちゃんと動きました
ありがとうございます

お礼日時:2014/12/02 00:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング