• Как считывать со scanf несколько раз?

    AlexDyuba
    @AlexDyuba
    попробуй этот код: перед scanf, функцию rewind(stdin);
    #define _CRT_SECURE_NO_WARNINGS
    #include
    #include

    main()
    {

    char auswahl;

    do
    {
    // Auswahlmenü:
    printf("**************** Menue ******************\n"
    "* *\n"
    "*1) Konvertierung Dezimal zu Oktal *\n"
    "*2) Konvertierung Oktal zu Dezimal *\n"
    "*3) Abbruch *\n"
    "* *\n"
    "**************** ****** *****************\n\n");
    rewind(stdin);
    // Wert einlesen:
    int gelesenerWert = scanf("%1c", &auswahl); // ПРОБЛЕМА ЗДЕСЬ

    // Überprüfung:
    if (gelesenerWert == 1)
    {

    // Ungültige Eingaben:
    if (auswahl != '1' && auswahl != '2' && auswahl != '3')
    {
    printf("Ungueltige Eingabe. Bitte erneut versuchen.\n");
    }

    // Fall 1: Dezimal zu Oktal
    if (auswahl == '1')
    {

    }

    // Fall 2: Oktal zu Dezimal
    else if (auswahl == '2')
    {

    }

    // Fall 3: Abbruch
    continue;

    }
    else
    {
    printf("Ungueltige Eingabe. Bitte erneut versuchen.\n");
    }
    } while (auswahl != '3');

    }
    Ответ написан
    2 комментария
  • Что произойдёт при попытке получить доступ к адресу 0х0 виртуальной памяти?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В контексте языка С++ будет неопределённое поведение с непредсказуемыми последствиями. Оптимизирующий компилятор может реорганизовать последовательность выполнения программы рассчитывая на то, что разыменовываемый указатель в валидной программе не может быть равен 0.

    В контексте поведения программы, если доступ по адресу 0 произойдёт, поведение зависит от ОС/среды выполнения. Варианты -- программе будет послан сигнал SIGSEGV (POSIX), в программе произойдёт исключение (windows), доступ будет выполнен как к любому другому адресу (ОС без защиты памяти).
    Ответ написан
    Комментировать