勉強用に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
今のところ、コレだけです。増えたら都度追記していこうと思います。