У меня есть программа, когда пользователь нажимает клавишу 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. Терминал считывается по строкам ... –
Mac osx. как я могу использовать fflush? спасибо –
MacOSX также является системой unix, поэтому вы также должны прочитать о http://www.linusakesson.net/programming/tty/index.php; и вы можете называть 'fflush (NULL);'. –