⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitfiles.c

📁 嵌入式基准程序集Mibench,如果需要全部测试软件,请从密西根大学网站上下载: http://www.eecs.umich.edu/mibench/
💻 C
字号:
/* +++Date last modified: 05-Jul-1997 *//***  BITFILES.C - reading/writing bit files****  Public domain by Aare Tali*/#include <stdlib.h>#include "bitops.h"bfile *bfopen(char *name, char *mode){      bfile * bf;      bf = malloc(sizeof(bfile));      if (NULL == bf)            return NULL;      bf->file = fopen(name, mode);      if (NULL == bf->file)      {            free(bf);            return NULL;      }      bf->rcnt = 0;      bf->wcnt = 0;      return bf;}int bfread(bfile *bf){      if (0 == bf->rcnt)          /* read new byte */      {            bf->rbuf = (char)fgetc(bf->file);            bf->rcnt = 8;      }      bf->rcnt--;      return (bf->rbuf & (1 << bf->rcnt)) != 0;}void bfwrite(int bit, bfile *bf){      if (8 == bf->wcnt)          /* write full byte */      {            fputc(bf->wbuf, bf->file);            bf->wcnt = 0;      }      bf->wcnt++;      bf->wbuf <<= 1;      bf->wbuf |= bit & 1;}void bfclose(bfile *bf){      fclose(bf->file);      free(bf);}#ifdef TESTvoid test1(void){      bfile *out;      bfile *in;      FILE  *in1;      FILE  *in2;      in = bfopen("bitfiles.c", "rb");      out = bfopen("bitfiles.cc", "wb");      if ((NULL == in) || (NULL == out))      {            printf("Can't open/create test files\n");            exit(1);      }      while (!feof(in->file))            bfwrite(bfread(in), out);      bfclose(in);      bfclose(out);      in1 = fopen("bitfiles.c", "rb");      in2 = fopen("bitfiles.cc", "rb");      if ((NULL == in1) || (NULL == in2))      {            printf("Can't open test files for verifying\n");            exit(1);      }      while (!feof(in1) && !feof(in2))      {            if (fgetc(in1) != fgetc(in2))            {                  printf("Files not identical, copy failed!\n");                  exit(1);            }      }      if (!feof(in1) || !feof(in2))      {            printf("Not same size, copy failed!\n");            exit(1);      }      fclose(in1);      fclose(in2);}void test2(void){      FILE  *in1;      bfile *in2;      int    ch;      in1 = fopen("bitfiles.c", "rb");      in2 = bfopen("bitfiles.cc", "rb");      if ((NULL == in1) || (NULL == in2))      {            printf("Can't open test files\n");            exit(1);      }      while (!feof(in1) && !feof(in2->file))      {            ch = fgetc(in1);            if (ch < ' ')                  ch = '.';            printf(" '%c' ", ch);            for (ch = 0; ch < 8; ch++)                  printf("%c", "01"[bfread(in2)]);            printf("   ");      }      fclose(in1);      bfclose(in2);}main(){      test1();      test2();      return 0;}#endif /* TEST */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -