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
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
Cũ vẫn chất
-

Hàm SUBTOTAL: Tính tổng giá trị danh sách đã lọc trong Excel
2 ngày -

Stt về bạn thân, những câu nói hay về tình bạn
2 ngày 2 -

Top 5 smartphone tốt nhất cho người lớn tuổi
2 ngày -

Cách lấy link video YouTube trên điện thoại, máy tính
2 ngày -

Cách cài tiếng Việt cho Messenger trên điện thoại
2 ngày -

Những biệt danh hay cho bạn thân, đặt biệt danh cho bạn thân
2 ngày 53 -

Cách xóa trang trắng trong Google Docs
2 ngày -

Cách bấm dây mạng chuẩn chỉ với 3 bước
2 ngày 1 -

Cách đăng ký gói V90Z Viettel nhận 30GB
2 ngày -

File XML là gì và cách mở nó như thế nào?
2 ngày
Học IT
Công nghệ
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Hướng dẫn
Ô tô, Xe máy