Hàm assert() đánh giá biểu thức đầu vào

void assert(int expression);

Parameters:

expression: biểu thức đầu vào (có thể là con trỏ)

Remark:

Hàm assert( ) được sử dụng để đánh giá biểu thức và phát hiện lỗi logic trong khâu coding bằng cách đánh giá biểu thức đầu vào.

  • Nếu biểu thức đầu vào có giá trị là false (0), hàm assert( ) sẽ in ra thông báo lỗi, sau đó gọi hàm abort( ) để kết thúc chương trình
  • Nếu biểu thức đầu vào có giá trị là true (1), hàm assert() sẽ không làm gì (chương trình vẫn thực hiện như bình thường)
  • Định dạng của thông báo lỗi phụ thuộc ứng dụng gọi hàm assert( ).
  • Nếu là Console application thì thông báo lỗi sẽ được hiển thị lên màn hình console như khi chúng ta sử dụng lệnh printf( ). Xem thêm các bài tập C console application
  • Nếu là ứng dụng Win32 (ứng dụng có giao diện window), thì hàm assert( ) sẽ gọi hàm MessageBox( ) hiển thị 1 cửa sổ message box với button “OK”. Nếu bạn click vào button “OK”, ứng dụng Win32 của bạn sẽ kết thúc ngay lập tức.(xem thêm các bài tập lập trình Win32).

Header

Để sử dụng hàm assert(), bạn cần #include <assert.h>

Ví dụ: Trong đoạn code dưới đây, hàm analyze_string( ) gọi hàm assert( ) để kiểm tra các điều kiện của string đầu vào ( con trỏ NULL, string là rỗng, chiều dài string phải lớn hơn 2). Nếu 1 trong các điều kiện này trả về false, thì message lỗi tương ứng sẽ được chỉ ra.

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

void analyze_string( char *string ); // Prototype

int main( void )
{
    char test1[] = "abc", *test2 = NULL, test3[] = "";

    printf("Analyzing string '%s'\n", test1); 
    fflush(stdout);
    analyze_string(test1);

    printf("Analyzing string '%s'\n", test2); 
    fflush(stdout);
    analyze_string(test2);

    printf("Analyzing string '%s'\n", test3); 
    fflush(stdout);
    analyze_string(test3);
    getch();
}

// Tests a string to see if it is NULL, 
// empty, or longer than 0 characters.
void analyze_string( char * string )
{
    assert( string != NULL ); // Cannot be NULL
    assert( *string != '\0' ); // Cannot be empty
    assert( strlen( string ) > 2 ); // Length must exceed 2
}

Kết quả:

Hàm assert()

Be the first to comment

Leave a Reply