STDIO
Tìm kiếm gần đây

    Nội dung

    Nhập Xuất Cơ Bản Trong C/C++

    18/03/2016
    13/07/2020
    Nhập Xuất Cơ Bản Trong C/C++
    Bài viết là tiền đề giúp cho người đọc làm quen trong việc kiểm soát dữ liệu nhập xuất cũng như các thao tác cơ bản trên C/C++.

    Đối với lập trình viên, việc tương tác với máy tính và kiểm soát đầu vào và đầu ra của dữ liệu là vô cùng quan trọng. Khác với các ngôn ngữ lập thường gặp hiện nay như Java, C#... hay các ngôn ngữ mới đã được hỗ trợ nhiều thư viện xử lý dữ liệu, C/C++  lại rất tường minh trong việc nhập xuất dữ liệu ngay từ những dòng code đầu tiên. Điều này gây không ít khó khăn cho người mới bắt đầu với ngôn ngữ lập trình C/C++. 

    Tổng quan

    Đối với tất cả ngôn ngữ lập trình, việc kiểm soát tiêu chuẩn đầu vào, đầu ra của dữ liệu là vô cùng quan trọng. Khi làm việc với ngôn ngữ C/C++, đầu tiên phải nói đến thư viện <stdio.h> - C chuẩn (<iostream> - C++ chuẩn).

    stdio.h cung cấp 2 hàm hỗ trợ nhập xuất cơ bản là printf() và scanf().

    printf và scanf

    printf() viết tắt của "print formatted" nghĩa là hàm in có định dạng. Làm nhiệm vụ xuất dữ liệu ra màn hình.

    Cấu trúc printf(<"chuỗi định dạng">, <danh sách tham số>). Trong đó:

    • Chuỗi định dạng "format string" làm nhiệm vụ định dạng dữ liệu xuất ra màn hình.
    • Danh sách tham số có thể bao gồm nhiều biến, hằng số, biểu thức và hàm... được phân cách bằng dấu "," .

    scanf() viết tắt của "scan formatted"  nghĩa là hàm quét có định dạng. Làm nhiệm vụ quét dữ liệu đầu vào.

    Cấu trúc scanf(<định dạng kỹ thuật>, <danh sách tham chiếu>). Trong đó:

    • Định dạng kỹ thuật làm nhiệm vụ định dạng dữ liệu đầu vào.
    • Danh sách tham chiếu bao gồm các dữ liệu được truyền với dạng tham chiếu có cấu trúc được quy định là &<tên biến> dành cho các kiểu dữ liệu cơ bản "primitive data type", còn đối với các kiểu dữ liệu dẫn xuất như chuỗi ký tự thì tham chiếu đơn giản là <tên biến>.

    Chuỗi định dạng

    Chuỗi định dạng trong print() được đặt trong dấu " " cho phép nhiều thành phần cùng tồn tại như:

    • Ký tự văn bản "Text characters": là những ký tự in được, bao gồm các chữ cái, chữ số và các ký tự đặc biệt trong bảng mã ASCII.
    • Ký tự điều khiển: bao gồm một số ký tự điều khiển như tab \t, xuống dòng \n, khoảng trắng  , … khoảng trắng thường được sử dụng để phân cách các trường "field" dữ liệu được xuất ra.
    • Định dạng kỹ thuật: quy định kiểu dữ liệu được xuất ra màn hình.

    Ký tự điều khiển thường dùng 

    \n Nhảy xuống dòng kế tiếp
    \t Tab khoảng cách ngang 
    \r Nhảy về đầu hàng
    \a Tiếng kêu bip
    \\ In ký tự  \
    \" In ký tự  "
    \' In ký tự '
    %% In ký tự % 

    Định dạng kỹ thuật thường dùng 

    %d int định dạng kiểu số nguyên và tham chiếu dữ liệu hệ thập phân 
    %i  int định dạng kiểu số nguyên và tham chiếu dữ liệu hệ thập lục phân 
    %f float định dạng kiểu số thực 
    %c  char định dạng kiểu ký tự 
    %s character string  định dạng chuỗi ký tự 
    %lf double định dạng kiểu số thực double 
    %ld long định dạng cho một số kiểu long 
    %Lf long double định dạng cho một số kiểu long double 

    Ví dụ

    Hiện thực các ví dụ bên dưới để hiểu rõ hơn về nhập xuất trong C/C++.

    Ví dụ cho việc hiển thị thông tin

    #include <stdio.h> 
    #define _CRT_SECURE_NO_WARNINGS 
    
    int main() 
    {
        printf("Hello! \n");
        printf("Your name \n");
        printf("%% \t \\ \t / \t %% \n");
    
        return 0;
    }

    Ví dụ về việc tính toán

    #include <stdio.h> 
    #define _CRT_SECURE_NO_WARNINGS 
    
    int main() 
    {
        int a; // khai bao bien a kieu so nguyen
        float c, d; // khai bao 2 bien kieu so thuc
        a = 0; // truyen vao bien a gia tri 0
        int b = 2; // khai bao bien b va truyen gia tri 2 vao bien b
        c = 3.1416f; // truyen gia tri vao bien c kieu so thuc
        d = 0.12f; // truyen gia tri vao bien d kieu so thuc
        
        printf("a = %d; b = %d\n", a, b);
        printf("c = %f; d = %f\n", c, d);
        printf("a + b = %d", a+b);
        return 0;
    }
    

    Ví dụ về nhập xuất dữ liệu

    #include <stdio.h> 
    #define _CRT_SECURE_NO_WARNINGS 
    
    int main() 
    {
       char name[32];
        printf("Nhap ten của ban: ");
        scanf("%s", name);
        printf("Ten ban la: %s \n", name);
    
        return 0;
    }

    Khác nhau giữa %i và %d vì cả hai định dạng giống và khác nhau một số trường hợp. Thực hiện ví dụ tổng hợp để phân biệt sự khác nhau giữa %d và %i khi chúng ta cùng nhập một giá trị 020 hai lần với hai định dạnh %d và %i.

    #include <stdio.h>
    #define _CRT_SECURE_NO_WARNINGS
    
    int main()
    {
        int number1, number2; // 020 020
        printf("Thuc hien nhap hai so giong nhau voi %%d va %%i ");
        scanf("%d%i", &number1, &number2);
        printf("%d\t%d \n", number1, number2);
        return 0;
    }
    

    Một trong những cảnh báo thường gặp khi thao tác với các hàm có liên quan tới thư viện CRT của Visual Studio từ phiên bản 2012 trở đi là Compiler warning C4996 yêu cầu sử dụng printf_s, scanf_s, fopen_s, … tham khảo bài viết Compiler Warning C4996 Và C Run-time Library Hay _CRT _SECURE_NO_WARNINGS (CRT) để hiểu và giải quyết vấn đề này.

    Thảo luận

    In order to comment you must be a STDIO Insider. Please sign up or log in to continue.

    Đăng nhập

    Bài viết liên quan

    Nhập Xuất Cơ Bản Trong C++

    Nhập Xuất Cơ Bản Trong C++

    Đối với mọi ngôn ngữ lập trình, thao tác nhập/xuất dữ liệu luôn là thao tác cơ bản và quan trọng mà mỗi lập trình viên cần nắm rõ. Bài viết này sẽ cung cấp kiến thức cơ ...

    Rye Nguyen

    03/08/2015

    Nhập Xuất Cơ Bản Trong C

    Nhập Xuất Cơ Bản Trong C

    Trong bất cứ một ngôn ngữ lập trình nào, việc tương tác trực tiếp với máy tính là rất quan trọng và cần thiết. Một chương trình được viết ra cần có khả năng nhận dữ liệu ...

    Rye Nguyen

    28/07/2015

    Thao Tác Với Chuỗi Trong C/C++

    Thao Tác Với Chuỗi Trong C/C++

    Khái niệm chuỗi ký tự do con người đặt ra để thuận tiện trong việc sử dụng. Có thể hiểu đơn giản, chuỗi là tập hợp các ký tự được lưu trữ liên tiếp trong vùng nhớ máy ...

    Rye Nguyen

    28/07/2015

    Một Vài Chương Trình C++ Cơ Bản

    Một Vài Chương Trình C++ Cơ Bản

    Bài viết giới thiệu cho bạn đọc mới làm quen với C++ một vài bài toán cơ bản như tính tổng, hiệu, tích và thương của 2 số, tính chu vi và diện tích của một số hình cơ bản ...

    Vũ Quang Huy

    28/09/2014

    Xây Dựng Hàm Có Tham Số Tuỳ Ý Trong C

    Xây Dựng Hàm Có Tham Số Tuỳ Ý Trong C

    Trong một số trường hợp, chúng ta cần truyền vào hàm một vài tham số mà chưa biết trước được số lượng. Giải pháp thông thường là đưa các phần tử đó vào một mảng hoặc một ...

    Rye Nguyen

    03/08/2015

    Cú Pháp Cơ Bản Trong Python

    Cú Pháp Cơ Bản Trong Python

    Trong bài viết ngày hôm nay, tôi sẽ cùng các bạn làm quen với những vấn đề cơ bản nhất của cú pháp trong Python. Về cơ bản thì Python có khá nhiều điểm tương đồng với các ...

    Ryan Lê

    18/03/2015

    Bản Chất Của Biến Trong C/C++

    Bản Chất Của Biến Trong C/C++

    Những ngày đầu được học và làm việc với các kiểu biến như int, float, char….Tôi luôn có những thắc mắc về:”Điều gì đang xảy ra bên trong biến int, char… khi ta cấp phát ...

    Trần Hữu Danh

    16/01/2015

    Sử Dụng Mảng Trong C++

    Sử Dụng Mảng Trong C++

    Mảng dữ liệu là một tập hợp các phần tử có cùng kiểu dữ liệu và được truy cập thông qua index. Việc vận dụng mảng dữ liệu trong việc học tập và làm việc là điều không thể ...

    Rye Nguyen

    29/07/2015

    Tối Ưu Mã C/C++ Cho Người Mới Bắt Đầu

    Tối Ưu Mã C/C++ Cho Người Mới Bắt Đầu

    Xuất phát từ vấn đề đánh giá tiêu chuẩn một sản phẩm do một người lập trình làm ra, điều quan trọng không kém đó chính là tốc độ xử lí và kích thước của một chương trình. ...

    Trần Minh Cường

    28/08/2015

    9 Tính Năng Quan Trọng Trong C++11

    9 Tính Năng Quan Trọng Trong C++11

    C++11 là một phiên bản cải tiến và nâng cấp từ C++98 (hay các bạn vẫn gọi là C++), với những tính năng mới tối ưu hơn, dễ sử dụng hơn, dễ quản lý bộ nhớ hơn, và khắc phục ...

    Lê Minh Tài

    13/08/2015

    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020