Joe's C language include files
個人用の基本的なマクロの定義ファイル。引数を取らないマクロはここに。
引数を取る(やや危険な)マクロはここに。
標準出力(画面)とファイルへの同時出力など。
実行のたびごとに、ディレクトリ run001, run002, run003, ... を勝手に作成していき、そこに計算結果のファイル達を収めていくための関数など。
#include
#include "/home/joe/C/joe2.h"
////
// compile me with gcc -O2 sample.c Jutils.c -o sample
////
void JprepareRunDir(char runDir[8]);
FILE *JFopen(char *dir, char *filename, char *mode);
int main(int argc, char *argv[]){
double r;
FILE *fp;
char str[256]; // THIS VARIABLE NAME IS HARD-CODED IN MYFFLUSH AND MYPUTS
char runDir[8];
PR("These macros are to output a string (e.g. parameter values) both in stdout and to a file.\n");
PR("Everytime this program is run, it creates a new directory runXXX. \n");
PRN;
JprepareRunDir(runDir);
PR("%s \n",runDir);
fp=JFopen(runDir, "hogehoge.txt","w");
FPPRARGS(fp);
FPPR(fp,"Params:\n");
r=2.45;
SPR(str,"r=%f",r);
FPPR3(fp,"%s\n",str); // MYFFLUSH does the same thing as this line, plus fflush(fp);
FPPRN(fp);
// repeating similar actions by different macro names (bit shorter)
r=3.14;
SPR(str,"r=%f",r);
MYFFLUSH(fp);
r=1.41;
SPR(str,"r=%f\n",r);
FPUTS(str,fp);
r=1.00;
SPR(str,"r=%f",r);
MYPUTS(fp);
fclose(fp);
}