Почему нажатие Enter не возвращает '\n' getch ()?

Вам нужно инициализировать переменную значениями по умолчанию. Либо вы можете инициализировать переменные там, где вы их определили, либо использовать их, как показано ниже:

public class Users ... {
...
public Users() { 
    Users("","",false) // "" or null for String
  }
  ...
}

Кроме того, добавьте реализуемый Serializable в вашу модель.

5
задан Community 9 February 2016 в 17:30
поделиться

7 ответов

Используйте '\r' и завершите Вашу строку с '\0'.

Кроме того, Вы могли бы попытаться использовать getche (), чтобы дать визуальное эхо пользователю и сделать некоторые другие общие исправления:

#include <stdio.h>
#include <conio.h>

#define MAX_NAME_LENGTH 20

int main()
{
    char ch, name[MAX_NAME_LENGTH];
    int i=0;
    clrscr();
    printf("Enter a string:");
    while ( ((ch=getche())!='\r') && (i < MAX_NAME_LENGTH - 1) )
    {
        name[i]=ch;
        i++;
    }
    name[i] = '\0';
    printf("%s\n",name);

    return 0;
}
9
ответ дан 18 December 2019 в 09:54
поделиться

Попробуйте \r вместо \n

\n является символом новой строки (0x0A), или 10 десятичных чисел, \r является символом возврата carrige (0x0D) или 13 десятичных чисел.

Клавиша Return является возвратом carrige.

5
ответ дан 18 December 2019 в 09:54
поделиться

в некоторой системе новая строка является "\r\n" возвратом каретки (входят), "\r"

0
ответ дан 18 December 2019 в 09:54
поделиться

Это вызвано тем, что клавиша Return на Вашей клавиатуре представлена внутренне как '\r' не '\n'. Для того определенного примера для работы необходимо было бы захватить '\r' вместо этого.

1
ответ дан 18 December 2019 в 09:54
поделиться

Введение на самом деле "\r\n" (возврат каретки и перевод строки) в Windows. getchar () возвратит '\n', я думаю.

0
ответ дан 18 December 2019 в 09:54
поделиться

Я думаю, что было бы лучше просто использовать:

scanf("%19s", name);

вместо getch вещи.

-1
ответ дан 18 December 2019 в 09:54
поделиться

Это зависит от Вашей системы. Также необходимо знать, что getch () это - часть Стандарта Проклятий XSI, выпущенного X-Open или OpenGroup и не связанное с Borland определенный conio.h заголовок.

Необходимо использовать getchar (3) или getc (3), который все они принадлежат стандарту ISO/IEC 9899:1990. Оба вызова получают всего один байт от терминала/консоли управления или входного потока, соответственно.

При вызове их от платформы Windows Вы получаете с клавишей Enter, '\r', '\n' последовательность, вместо просто '\n'. Затем необходимо создать цикл вокруг getchar (3) или getc (3) вызовы. Кроме того, вызов к fgets (3) по stdin работал бы для получения '\r', '\n' упорядочивают.

Другая точка, то, что некоторые потребности платформ сбрасывают stding поток, затем необходимо применить сброс (3) вызов к stdin потоку.

fgets (3) и сброс (3) принадлежит стандарту ISO/IEC 9899:1990.

-1
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: