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

📄 str27seg.c

📁 国外网站上的一些精典的C程序
💻 C
字号:
/***  STR27SEG.C - Convert numeric strings to 7-segment strings.****  Public domain by Bob Stout****  Input:  A string (NUL-delimited char array) containing only digits**          ('0' - '9' chars).****  Output: The same string with each digit converted to a 7-segment**          representation. Returns NULL on error.*/#include <stdio.h>#include <ctype.h>#include "numcnvrt.h"#define CAST(new_type,old_object) (*((new_type *)&old_object))#define DISP(str) fputs((str), stdout)/***  Define the bit significance****     a**    ---**   |   |**  f|   |b**   | g |**    ---**   |   |**  e|   |c**   |   |**    ---**     d*/struct Seg7disp Seg7digits[10] = {      { 1, 1, 1, 1, 1, 1, 0 },      /* 0 */      { 0, 1, 1, 0, 0, 0, 0 },      /* 1 */      { 1, 1, 0, 1, 1, 0, 1 },      /* 2 */      { 1, 1, 1, 1, 0, 0, 1 },      /* 3 */      { 0, 1, 1, 0, 0, 1, 1 },      /* 4 */      { 1, 0, 1, 1, 0, 1, 1 },      /* 5 */      { 1, 0, 1, 1, 1, 1, 1 },      /* 6 */      { 1, 1, 1, 0, 0, 0, 0 },      /* 7 */      { 1, 1, 1, 1, 1, 1, 1 },      /* 8 */      { 1, 1, 1, 1, 0, 1, 1 }       /* 9 */};char *str27seg(char *string){      char *str;      int ch;      for (str = string ; *str; ++str)      {            if (!isdigit(*str))                  return NULL;            ch = CAST(int, Seg7digits[*str - '0']);            *str = (char)(ch & 0xff);      }      return string;}#ifdef TESTmain(){      char tstrng[] = "0123456789", *segs;      printf("str27seg() returned %p", segs = str27seg(tstrng));      if (segs)      {            char *ptr;            struct Seg7disp ch;            int i;            puts(" & produced:\n");            for (ptr = segs ; *ptr; ++ptr)            {                  ch = CAST(struct Seg7disp, *ptr);                  if (ch.seg_a)                        DISP(" --- ");                  else  DISP("     ");                  DISP("  ");            }            puts("");            for (i = 0; i < 3; ++i)            {                  for (ptr = segs ; *ptr; ++ptr)                  {                        ch = CAST(struct Seg7disp, *ptr);                        if (ch.seg_f)                              DISP("|   ");                        else  DISP("    ");                        if (ch.seg_b)                              DISP("|");                        else  DISP(" ");                        DISP("  ");                  }                  puts("");            }            for (ptr = segs ; *ptr; ++ptr)            {                  ch = CAST(struct Seg7disp, *ptr);                  if (ch.seg_g)                        DISP(" --- ");                  else  DISP("     ");                  DISP("  ");            }            puts("");            for (i = 0; i < 3; ++i)            {                  for (ptr = segs ; *ptr; ++ptr)                  {                        ch = CAST(struct Seg7disp, *ptr);                        if (ch.seg_e)                              DISP("|   ");                        else  DISP("    ");                        if (ch.seg_c)                              DISP("|");                        else  DISP(" ");                        DISP("  ");                  }                  puts("");            }            for (ptr = segs ; *ptr; ++ptr)            {                  ch = CAST(struct Seg7disp, *ptr);                  if (ch.seg_d)                        DISP(" --- ");                  else  DISP("     ");                  DISP("  ");            }            puts("");      }      else  puts("\n");      return 0;}#endif /* TEST */

⌨️ 快捷键说明

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