勉強用にmylib.hを作る

ここまでずっとC言語の勉強をしてきたわけですが、値の交換処理や配列の出力をするのにいちいちコピペでやってきました。

そろそろ勉強用に良く使う関数をどこか一箇所にまとめておきたいなと思い、mylib.hなるものを作って今後はそこに何度も使う小さなプログラムを突っ込んでいこうかなと思っています。

/* mylib.h */
#ifndef MYLIB_H
#define MYLIB_H

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define ARRAY_NUM(a) (sizeof(a)/sizeof(a[0]))

void printf_array(const char *,int *,int);
void printf_array_cpp(const char *,char **,int);
double benchmark(int,void (*)(void));
void swap (int *, int *);
void swap_char (char **, char **);

// int型の配列の出力
void printf_array(const char *format,int *array,int size) {
    int i;
    for (i=0;i<size;i++) {
        printf(format,array[i]);
    }
}

// char型のポインタ配列の出力
void printf_array_cpp(const char *format,char **array,int size) {
    int i;
    for (i=0;i<size;i++) {
        printf(format,array[i]);
    }
}

// int型の値の交換
void swap (int *a, int *b) {
    int work = *a;
    *a = *b;
    *b = work;
}

// char型のポインタの交換
void swap_char (char **a, char **b) {
    char *work = *a;
    *a = *b;
    *b = work;
}

// 自作ベンチマーク
double benchmark(int count,void (*func)(void)){
    clock_t start,end;
    int i;
    start = clock();
    
    for(i=0;i<count;++i){
        (*func)();
    }
    
    end = clock();
    return (end - start) / (double)CLOCKS_PER_SEC;
}

#endif

今のところ、コレだけです。増えたら都度追記していこうと思います。