C/C++ Basics

Đọc và kiểm tra input

Thao tác input có thể thất bại nên code phải kiểm tra kết quả thay vì giả định dữ liệu đúng.

Đọc và kiểm tra input là gì?

Thao tác input có thể thất bại nên code phải kiểm tra kết quả thay vì giả định dữ liệu đúng.

Đọc dữ liệu người dùng và từ chối giá trị không hợp lệ.

Điểm quan trọng

  • Luôn bật compiler warning và xử lý mọi cảnh báo.
  • Hiểu rõ type và lifetime của từng giá trị.
  • Kiểm tra input và giới hạn mảng rõ ràng.

Code ví dụ bằng C và C++

C
Chạy code →
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;
}
Output dự kiến
Age: 20
Next year: 21
C++
Chạy code →
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';
}
Output dự kiến
Age: 20
Next year: 21

So sánh C và C++

scanf trả số field convert thành công; std::cin chuyển sang fail state nếu không đọc được type yêu cầu.

C

C dùng API thủ tục nhỏ gọn và thể hiện chi tiết biểu diễn rõ ràng.

C++

C++ giữ mô hình low-level nhưng bổ sung type thư viện và abstraction an toàn hơn.

Bài tập mở rộng

Chạy cả hai phiên bản rồi thay đổi để quan sát khác biệt về bảo đảm của từng ngôn ngữ.

  • Thêm input sai và boundary value.
  • Biên dịch với -Wall -Wextra -Wpedantic.
  • Tách declaration dùng lại vào header và implementation file.