ユーザーがEnterキーを押したときにプログラムが終了しようとしています。何らかの理由で動作しないようです。 「char cはキーを入力するのと同じではない」を使用すると、c(最後に入力された整数)の余分な整数が取り込まれます。このコードの問題は何ですか?Enterキーでプログラムを終了
#include <stdio.h>
#include <stdlib.h>
#define framenumber 4
int test1 =0;
int test2=1;
int main(void)
{
int mainarray[framenumber][2] = {0}, nHP = 3, takein, iPT;
char c = getchar();
printf("Enter: ");
while(1)
{
char c = getchar();
if(c == '\n') {
printf("here");
}
else
{
printf("not enter\n");
takein = atoi(&c);
for (iPT = 0; mainarray[iPT][test2] != takein && iPT < framenumber; iPT++);
if (mainarray[iPT][test2] != takein)
{
//search for a victim
do {
nHP = (nHP + 1) % framenumber;
} while (!(mainarray[nHP][test1] == 1 ? mainarray[nHP][test1] = 0 : 1));
//update the page table
mainarray[nHP][test1] = 1;
mainarray[nHP][test2] = takein;
}
else
{
mainarray[iPT][test1] = 1;
}
puts("page table:");
for (iPT = 0; iPT < framenumber; iPT++)
{
printf("%s %d, %d.\n", iPT == (nHP + 1) % 4 ? ">": " ", mainarray[iPT][test1], mainarray[iPT][test2]);
}
putchar('\n');
printf("Enter: ");
}
}
return 0;
}
どのオペレーティングシステムでですか?あなたの 'printf'はその形式で改行を終わらせるべきです(そうでなければ' fflush'を使います)。 Linuxでは、tty-sについて読むべきです。端末は1行ずつ読み込まれます... –
Mac OS X。どのように私はfflushを使用するのですか?ありがとう –
MacOSXもUnixシステムですので、http://www.linusakesson.net/programming/tty/index.phpも読んでください。 'fflush(NULL);'を呼び出すことができます。 –