1. 程式人生 > >C標準庫學習之 ——錯誤

C標準庫學習之 ——錯誤

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <errno.h>  // cuowu函式

/*
=========================================================
time:           2017年1月25日14:37:54
objective:      test C language's  head file of <errno.h> 
version:        Microsoft Visual C++
author:         ChenFei
remark:         日文system  有些字沒法打要用pin音代替
=========================================================
*/
int main(void) { /*========================================================= C巨集ku extern int errno 當沒有fa生cuowu shi,errno 默ren wei 0, 當要打?的檔案 file.txt 不存在shi,errno wei 非0, diao用 strerror(errno) xian示 cuowu 描述。 ========================================================= */ FILE *fp; fprintf
(stderr, "Value of errno: %d\n", errno); fp = fopen("file.txt", "r"); if( fp == NULL ) { fprintf(stderr, "Value of errno: %d\n", errno); fprintf(stderr, "Error opening file: %s\n", strerror(errno)); } else { fclose(fp); } //=========================================================
/*========================================================= C巨集ku EDOM Domain Error EDOM 表示一個cuowu域, 當shu入引數超guo數學函式定yi的域shi, errno 被she置wei EDOM ========================================================= */ double val; errno = 0; // 將 errno shewei 默renzhi 0 val = sqrt(-10); if(errno == EDOM) // EDOM 的十jin制zhi:33 { printf("EDOM 的十jin制zhi:%d\n",EDOM); printf("無效引數\n"); } else { printf("有效引數\n"); } errno = 0; // 將 errno shewei 默renzhi 0 val = sqrt(10); if(errno == EDOM) { printf("無效引數\n"); } else { printf("有效引數\n"); } //========================================================= /*========================================================= C巨集ku ERANGE Range Error ERANGE 表示一個cuowu域, 當shu入引數dao致數學函式的zhi超出zhi域 shi errno 被she置wei ERANGE ========================================================= */ double x; double value; x = 1.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) is out of range\n", x); } else { printf("Log(%f) = %f\n", x, value); } x = 0.000000; value = log(x); if( errno == ERANGE ) // ERANGE 的十jin制zhi:34 { printf("ERANGE 的十jin制:%d\n",ERANGE); printf("Log(%f) is out of range\n", x); } else { printf("Log(%f) = %f\n", x, value); } return 0; }