C言語共通ヘッダファイル及びライブラリ関数

8044 ワード

#include < stdio.h >
*コメント:入出力関数の定義
1、入力関数
  • int getchar()/標準入力装置から1文字
  • を読み込む
  • int scanf(char*format[,argument...])/標準入力装置からフォーマットされたデータ
  • を読み込む
  • char gets(char*string)/標準入力装置から文字列
  • を読み込む
    2、出力関数
  • int printf(char*format[,argument...])/フォーマット文字列
  • を標準出力装置に出力する
  • int putchar()/標準出力装置に1文字
  • を書く
  • int puts(char*string)/標準出力装置に文字列
  • を出力する
  • int sprintf(char*string,char*format[,...])/フォーマットされたデータを文字列バッファ
  • に書き込む
    3、ファイル操作関数(簡略)
        
    fopen
    freopen
    fflush
    fclose
         /  
    fread
    fwrite
          /  
    fgetc/getc
    fputc/putc
    ungetc
    fgets
    fputs
         /  
    scanf/fscanf/sscanf
    printf/fprintf/sprintf
    perror
        
    ftell
    fseek
    fgetpos
    fsetpos
    rewind
        
    feof
    ferror
        
    remove
    rename
    tmpfile

    #include < stdlib.h >
    *コメント:その他の関数およびメモリ割当て関数の定義
    1、文字列変換関数
  • int atoi (const char*);//文字列をint型
  • に変換する
  • double atof (const char*);
  • long atol (const char*);
  • double strtod (const char*, char**);
  • long strtol (const char*, char**, int);
  • unsigned long strtoul (const char*, char**, int); 例えば、int num=atoi(str);

  • 2、乱数関数
    *注記:rand関数は実際の乱数ジェネレータではなく、srand()はrand()で使用する乱数シードを設定します.最初にrand()を呼び出す前にsrand()を呼び出さなかった場合、システムはsrand()を自動的に呼び出します.一方、同じシードと同じ数でrand()を呼び出すと、同じ乱数シーケンスが生成されます.time_についてt time(0):time_tは長整型として定義され、1970年1月1日0時0分0秒からこれまでの時間を秒単位で返した.  RAND_MAX[1]はC言語標準ライブラリで定義されたマクロであり、(C 11)標準でRAND_は規定されていないMAXの具体的な数値.しかし、この基準はRAND_を規定している.MAXの値は少なくとも32767であるべきである.
  • void srand (unsigned int); 乱数発生器(シード)
  • int rand (void); 次の擬似乱数を返します.たとえば、srand((int)time(NULL);//時間をかけて種を作るrand()%101;//0-100の乱数1+(int)(10.0*rand()/(RAND_MAX+1.0);生成1-10の数
  • 3、メモリ分配関数
    注記:void*malloc(size_t size);
  • void* calloc (size_t, size_t); メモリを割り当て、
  • をクリア
  • void* malloc (size_t); 割り当てメモリ
  • void* realloc (void*, size_t); メモリを再割り当てし、新しいポインタ
  • を返します.
  • void free (void*); メモリの解放例:int bob[100];bob=(int)malloc(sizeof(bob));

  • 4、端末コマンド
  • void abort (void);//プログラムの実行を終了する
  • void exit (int);//プログラムの実行を終了する
  • int atexit (void (*)(void));//プログラムの実行を終了する
  • int system (const char*);//実行コマンド文字列commandは、システム呼び出し
  • を行う.
  • char* getenv (const char*);

  • 5、検索と並べ替え
  • void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));//折半ルックアップ
  • void qsort (const void*, size_t, size_t,  int ()(const void, const void*));//クイックソート例:int comp(const void*a,const void*b){return(int)a-(int)b;}   qsort(array,length,sizeof(int),comp);

  • 6、整数演算
  • int abs (int);//int型絶対値関数
  • long labs (long);
  • div_t div (int, int);
  • ldiv_t ldiv (long, long);

  • #include < math.h >      
    注記:数学関数の定義
  • double hypot (double x,double y);直角三角形の2つの直角の辺の長さを知っていて、斜辺の
  • を求めます
  • double ldexp(double x,int exponent);計算x*(2のexponent乗数)
  • double poly(double x,int degree,double coeffs []);計算多項式
  • double fmod (double,double); 2つのパラメータを除いた残りの数
  • を返します.
  • int abs(int i); 整数型の絶対値の
  • を求めます
  • double fabs (double);求実型の絶対値
  • double cabs(struct complex znum);複素数の絶対値の
  • を求めます
  • double ceil (double); 整数をとると、xより小さくない最小整数
  • を返します.
  • double floor (double); 整数をとり、xより大きくない最大整数、すなわちガウス関数
  • を返す.
  • double log10 (double);10をベースとした対数
  • double pow(double x,double y);xのy次べき乗
  • を計算する
  • float powf(float x,float y); 機能はpowと一致するが、入力と出力はいずれも単精度浮動小数点数
  • である.
  • double exp (double);自然数eのべき乗を求める
  • double sqrt (double);開二乗
  • double sin(double);三角関数/逆三角関数例:double mod=fmod(12,3.5);//余数double three=hypot(3,4);//斜辺の
  • を求めます
    #include < string.h >
    注記:文字列処理関数
  • void *memset(void *s, int ch, size_t n); sの最初のnバイト(typedef unsigned int size_t)をchで置き換え、sを返します.memsetの役割は、大きな構造体や配列をクリアする最も速い方法であるメモリブロックに所定の値を埋め込むことである.
  • extern char strcpy(char dest, const char *src);文字列はdest
  • にコピーされます.
  • char * strncpy(char *dest, char *src,size_t num); srcの内容(文字、数字、漢字...)をコピーします.destに着くと、コピーの数はnumの値で決まり、destへのポインタを返します.null文字(’0’)に遭遇し、num文字に到達していない場合は、(num-n)(nはnull文字に遭遇する前に既に存在していたnull文字以外の個数)個のnull文字をdestinationに添付します.
  • extern char *strcat(char *dest,char *src); srcで指す文字列をdestの末尾(destの末尾の'0'を上書き)に追加し、'0'を追加します.srcとdestは、メモリ領域が重なり合ってはいけないことを意味し、destはsrcの文字列を収容するのに十分な空間を持っていなければならない.destを指すポインタを返します.
  • extern char *strncat(char *dest,char *src,int n); srcが指す文字列の最初のn文字をdestの末尾(destの末尾を上書きする'0')に追加し、'0'を追加します.srcとdestは、メモリ領域が重なり合ってはいけないことを意味し、destはsrcの文字列を収容するのに十分な空間を持っていなければならない.destを指すポインタを返します.
  • extern int strcmp(const char s1,const char s2); 文字列s 1とs 2を比較します.s 1s 2の場合、戻り値>0は、異なる文字または"0"が現れるまで、左から右へ2文字ずつ比較(ASCII値の大きさで比較)します.
  • int strncmp(char *str1, char *str2, int maxlen); この関数機能は、文字列str 1とstr 2の前maxlen文字を比較することです.前のmaxlenバイトが完全に等しい場合、戻り値は=0になります.前maxlenバイトの比較中にstr 1[n]がstr 2[n]と等しくない場合は、(str 1[n]-str 2[n])が返される.
  • extern char *strchr(const char *s,char c); 文字列sに最初に現れる文字cの位置を検索し、最初に現れるcの位置のポインタを返し、sにcが存在しない場合NULLを返します.
  • extern unsigned int strlen(char *s); 計算文字列sの(unsigned int型)長さは、'0'を除く.終了文字NULLを含まないsの長さを返します.

  • #include < ctype.h >
    注記:文字分類関数
    
    int isalpha(char ch);      0( vs2015  2,     0.
    int isdigit(char ch);     ,      
    int isgraph(int ch);         ,    ,     
    int islower(int ch);    
    int isupper(int ch);    
    int tolower(int ch); ch         
    int toupper(int ch); ch         
    int isalnum(int ch);     
    int isspace(int ch);  ch          (    )    
    int isxdigit(int ch);

    #include < time.h >
    注釈ちゅうしゃく:時間関数じかんかんすう
    struct tm{int tm_sec;/*秒–取値区間[0,59]*/int tm_min;/*分-取値区間[0,59]*/int tm_hour;/*時-取値区間[0,23]*/int tm_mday;/*1ヶ月の日付-取値区間[1,31]*/int tm_mon;/*月(1月から0は1月を表す)-取値区間[0,11] */   int tm_year;/* 年、その値は実際の年から1900*/int tm_を減算した値に等しいwday;/* 曜日-取値区間は[0,6]で、0は日曜日、1は月曜日を表し、このように*/int tm_yday;/* 年間1月1日からの日数–値区間は[0365]で、0は1月1日、1は1月2日となります.isdst;/* サマータイム識別子、サマータイム実行時、tm_isdstは正です.サマータイムを実施しないisdstは0です.状況が分からない場合、tm_isdst()は負です.*/  };
  • struct tm*localtime(const time_t*timer)は、tm構造で表されるマシン時間
  • を返す.
  • time_t time(time_t *tp);システムの現在のカレンダ時間を返す
  • char*asctime(struct tm*ptr)が返す時間文字列のフォーマットは、曜日、月、日、時間:分:秒、年
  • です.
  • char*ctime(const time_t*time)は、週、月、日、時間:分:秒、年
  • の文字列フォーマットを返します.
  • double difftime(time_t time 2,time_t time 1)は、秒
  • の単位で2回の機械時間差を得る.
  • time(time_t *tp); 例:time_t t; t = time(NULL);//デフォルト1970-1-1 struct tm*p;time(&t);//現在のシステムカレンダーが得られ、書かないのはデフォルト1970年p=localtime(&t);現在のカレンダをマシンカレンダ
  • に変換