Основы C/C++

Чтение и проверка ввода

Операция ввода может завершиться неудачно, поэтому результат нужно проверять.

Что такое Чтение и проверка ввода?

Операция ввода может завершиться неудачно, поэтому результат нужно проверять.

Читайте ввод пользователя и отклоняйте неверные значения.

Важные моменты

  • Включайте предупреждения компилятора и исправляйте их.
  • Знайте тип и lifetime каждого значения.
  • Проверяйте ввод и границы массивов.

Примеры кода на C и C++

C
Запустить →
main.c
#include <stdio.h>

int main(void) {
    int age;
    printf("Age: ");
    if (scanf("%d", &age) != 1 || age < 0) {
        puts("Invalid age");
        return 1;
    }
    printf("Next year: %d\n", age + 1);
    return 0;
}
Ожидаемый результат
Age: 20
Next year: 21
C++
Запустить →
main.cpp
#include <iostream>

int main() {
    int age;
    std::cout << "Age: ";
    if (!(std::cin >> age) || age < 0) {
        std::cerr << "Invalid age\n";
        return 1;
    }
    std::cout << "Next year: " << age + 1 << '\n';
}
Ожидаемый результат
Age: 20
Next year: 21

Сравнение C и C++

scanf возвращает число успешных преобразований; std::cin переходит в fail state, если не может прочитать нужный тип.

C

C явно показывает небольшие процедурные API и представление данных.

C++

C++ сохраняет низкоуровневую модель и добавляет безопасные типы.

Практические задания

Запустите обе версии и изменяйте их, сравнивая гарантии языков.

  • Добавьте неверные и граничные значения.
  • Компилируйте с -Wall -Wextra -Wpedantic.
  • Разделите объявления и реализацию.