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
-

1000+ câu đố vui và đố mẹo hài hước có đáp án
2 ngày 42 -

Tổng hợp các trang web lưu trữ dữ liệu trực tuyến miễn phí tốt nhất hiện nay
2 ngày -

Cách hiển thị widget thời tiết trên Taskbar Windows 10
2 ngày -

Cách khắc phục lỗi Apple CarPlay không hoạt động
2 ngày -

Chụp ảnh và soi gương cái nào sẽ cho bạn hình ảnh chính xác nhất?
2 ngày -

Hướng dẫn kết nối máy tính với máy chiếu, kết nối laptop với máy chiếu
2 ngày 2 -

Làm sao để tải phụ đề video trên Youtube nhanh chóng và đơn giản?
2 ngày -

Mất quyền Admin trên Windows 10, đây là cách khắc phục
2 ngày -

6 cách mở Computer/System Properties trong Windows 10
2 ngày -

13 câu lệnh SQL quan trọng Programmer nào cũng cần biết
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