errno.h trong C
errno.h trong C
Header file có tên errno.h trong Thư viện C chuẩn định nghĩa biến nguyên errno, được thiết lập bởi system call (lời gọi hệ thống) và một số hàm thư viện về lỗi để chỉ rằng có lỗi đang xảy ra. Macro này là một sự mở rộng của kiểu int dạng lvalue có thể sửa đổi, vì thế nó có thể được đọc và được sửa đổi bởi một chương trình.
errno được thiết lập về 0 tại phần khởi động chương trình. Các hàm cụ thể của thư viện C chuẩn sửa đổi giá trị của nó về một số lớn hơn 0 để báo hiệu một số kiểu lỗi. Bạn cũng có thể sửa đổi giá trị của nó hoặc phục hồi nó về 0 tùy theo yêu cầu của bạn.
Header file có tên errno.h cũng định nghĩa một danh sách các macro để chỉ các mã lỗi khác nhau.
Các macro được định nghĩa trong errno.h
Bảng dưới liệt kê một số Macro được định nghĩa trong errno.h trong Thư viện C:
Macro | Mô tả |
---|---|
extern int errno | Đây là macro được thiết lập bởi system call và một số hàm thư viện về lỗi để chỉ rằng có lỗi đang xảy ra |
EDOM Domain Error | Macro này biểu diễn một domain error, mà xảy ra nếu một tham số đầu vào là ở bên ngoài miền mà hàm toán học đó được định nghĩa và errno được thiết lập là EDOM |
ERANGE Range Error | Macro này biểu diễn một range error, xảy ra nếu một tham số đầu vào là bên ngoài dãy giá trị mà hàm được định nghĩa, và errno được thiết lập là ERANGE |
1. Macro errno trong C
Macro errno trong C
Macro extern int errno trong Thư viện C được thiết lập bởi system call và một số hàm thư viện về lỗi để chỉ rằng có lỗi đang xảy ra.
Khai báo Macro errno trong C
Dưới đây là phần khai báo cho errno macro trong C.
extern int errno
Tham số
macro này không nhận bất kỳ tham số nào
Trả về giá trị
macro này không trả về bất kỳ giá trị nào
Ví dụ
Chương trình C sau minh họa cách sử dụng của errno Macro trong C.
#include <stdio.h> #include <errno.h> #include <string.h> extern int errno ; int main () { FILE *fp; fp = fopen("fileexample.txt", "r"); if( fp == NULL ) { fprintf(stderr, "Gia tri cua errno: %d\n", errno); fprintf(stderr, "Xay la loi khi mo file: %s\n", strerror(errno)); } else { fclose(fp); } return(0); }
Biên dịch và chạy chương trình C trên trong trường hợp file.txt không tồn tại:
2. Macro EDOM trong C
Macro EDOM trong C
Macro EDOM trong Thư viện C biểu diễn một domain error, mà xảy ra nếu một tham số đầu vào là ở bên ngoài miền mà hàm toán học đó được định nghĩa và errno được thiết lập là EDOM.
Khai báo Macro EDOM trong C
Dưới đây là phần khai báo cho EDOM Macro trong C.
#define EDOM some_value
Tham số
macro này không nhận bất kỳ tham số nào
Trả về giá trị
macro này không trả về bất kỳ giá trị nào
Ví dụ
Chương trình C sau minh họa cách sử dụng của EDOM Macro.
#include <stdio.h> #include <errno.h> #include <math.h> int main() { double val; errno = 0; val = sqrt(-10); if(errno == EDOM) { printf("Gia tri khong hop le \n"); } else { printf("Gia tri hop le\n"); } errno = 0; val = sqrt(10); if(errno == EDOM) { printf("Gia tri khong hop le\n"); } else { printf("Gia tri hop le\n"); } return(0); }
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
3. Macro ERANGE trong C
Macro ERANGE trong C
Macro ERANGE trong Thư viện C biểu diễn một range error, xảy ra nếu một tham số đầu vào là bên ngoài dãy giá trị mà hàm được định nghĩa, và errno được thiết lập là ERANGE.
Khai báo Macro ERANGE trong C
Dưới đây là phần khai báo cho ERANGE Macro trong C.
#define ERANGE some_value
Tham số
macro này không nhận bất kỳ tham số nào
Trả về giá trị
macro này không trả về bất kỳ giá trị nào
Ví dụ
Chương trình C sau minh họa cách sử dụng của ERANGE Macro.
#include <stdio.h> #include <errno.h> #include <math.h> int main() { double x; double value; x = 2.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) la ben ngoai day gia tri cua ham log\n", x); } else { printf("Log(%f) = %f\n", x, value); } x = 1.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) la ben ngoai day gia tri cua ham log\n", x); } else { printf("Log(%f) = %f\n", x, value); } x = 0.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) la ben ngoai day gia tri cua ham log\n", x); } else { printf("Log(%f) = %f\n", x, value); } return 0; }
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
Theo Tutorialspoint
Bài trước: ctype.h trong C
Bài tiếp: float.h trong C
Bạn nên đọc
Cũ vẫn chất
-
Kiểm tra tốc độ Internet, mạng Wifi FPT, VNPT, Viettel không cần phần mềm
Hôm qua -
Code Đại Bang Chủ, giftcode Đại Bang Chủ event mới nhất
Hôm qua -
Cách tạo VPN trên Windows 10
Hôm qua -
Tắt tính năng tự điều chỉnh độ sáng màn hình Windows 10
Hôm qua 4 -
Cách xem video YouTube giới hạn độ tuổi mà không cần đăng nhập
Hôm qua -
Những câu nói hay về sự ghen ăn tức ở, đố kỵ của con người
Hôm qua -
11 cách sửa lỗi "The System Cannot Find The Path Specified" trên Windows
Hôm qua -
Lời chúc Giáng sinh bằng tiếng Anh hay và ngắn gọn
Hôm qua -
Tra soát ngân hàng là gì? Thời gian tra soát mất bao lâu?
Hôm qua -
Cách kiểm tra lịch sử giao dịch VPBank nhanh nhất
Hôm qua