Завершите программу клавишей Enter

Я пытаюсь завершить программу, когда пользователь нажимает клавишу Enter. По некоторым причинам это не похоже на работу. Когда я использую "char c не равен вводимому ключу", оно получает дополнительное целое число в c (последнее введенное целое число). В чем проблема с этим кодом?

#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;
}

1 ответ

Решение

Не создавайте блочную переменную. (В то время как цикл).

  char c='\0';      /* initialize with 0 */
  printf("Enter: ");
  while(c!='\n')   /* loop terminate condition */
   {
        c= getchar(); /* remove declaration  */
        if(c =='\n')
        {
        printf("here");
        }
        else
        {
        getchar();  /*  read (eat) an extra input  */
        printf("not enter\n");
    ....
Другие вопросы по тегам