亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? print.c

?? UNIX 下
?? C
字號:
#include "stdio.h"#include "stdlib.h"#include "string.h"	//#include "curses.h"#define font_len 8#ifdef TRUE#else#define TRUE 1#endif#ifdef FALSE#else#define FALSE 0#endif#ifdef DEBUG#define DEBUF_OUTTEXT(a)#else#define DEBUG_OUTTEXT(a) printf("%s\n", a)#endif#define RET_OK 0#define RET_ERR 1#define COL_NUM 16#define COL_MAX_SIZE 128#define LINE_NUM 64#define ASSERT(arg, fp) {if(arg ==NULL){if(fp) fclose(fp); return RET_ERR;}}#define IN#define OUT#define FONT_MAX_NUM 10#define TMP_FILE "tmp.p"const char BADY[] = "<B>";const char END[] = "<E>";const char HEAD_E[] = "</H>";const char BADY_E[] = "</B>";const char END_E[] = "</E>";const char FONT[] = "<F?>";const char PARAM[] = "$?";char *FONT_BEGIN[FONT_MAX_NUM] = { "\033e", "\033X", "\033U", "\033g",  "\033i"};char *FONT_END[FONT_MAX_NUM] = { "\033f", "\033Y", "\033R", "\033h",  "\033j"};char ERR_FILE_NO[] = "文件不存在!file exist!";struct _DATA{  char *pCol[COL_NUM];  struct _DATA *pNext;} *g_pData, *g_pRoot;int g_iTotalNum = 0;int g_iCOLCounter = 0, g_iRAWCounter = 0;char *g_pPrintBuf = NULL;char *g_pHeadBuf = NULL;char *g_pEndBuf = NULL;char *g_pBadyBuf[LINE_NUM];int g_iBadyCounter = 0;/*g_iBadyCounter:數據實體個數*/int g_iLoopNUM = 0;/*g_iLoopNUM:用循環方式打印時,定義循環次數*/int g_iPrintType = 0;/*g_iPrintType:定義打印方式.==0終瑞打印, ==1主機打印*/char *g_pExecBuf = NULL;int readFormat (char *filename);int readData (char *filename);int help ();int processFormat (int type);char *transFormat (char *inBuf);FILE *openTMP ();void closeTMP (FILE * fp);FILE *openTMP (){  FILE *fp;  fp = fopen (TMP_FILE, "w");  if (!fp)    return NULL;  if (g_iPrintType == 0)    {//透明打印      fputs ("\033[5i", fp);    }  else    {				//主機打印      printf ("!!");    }  return fp;}voidcloseTMP (FILE * fp){  if (!fp)    return;  if (g_iPrintType == 0)    {      fputs ("\033[4i", fp);    }  else    {    }  fclose (fp);}intmain (int argc, char *argv[]){  char cBuf;  if (argc != 2 && argc != 3)    {      help ();      return RET_ERR;    }  if (argc == 2)    {      help ();      return RET_ERR;    }  else if (argc == 3)    {      if (strlen (argv[1]) < 4 || strlen (argv[2]) < 4)	{	  help ();	  return RET_ERR;	}      cBuf = argv[1][1];      switch (cBuf)	{	case 'f':	case 'F':	  readFormat (&argv[1][3]);	  break;	default:	  printf ("/F:FormatFile\n");	  return RET_ERR;	  break;	}      cBuf = argv[2][1];      switch (cBuf)	{	case 'D':	case 'd':	  readData (&argv[2][3]);	  processFormat (0);	  break;	case 'n':	case 'N':	  g_iLoopNUM = atoi (&argv[2][3]);	  processFormat (1);	  break;	default:	  printf ("循環次數或讀取數據文件! /N:number | /D:DataFile\n");	  printf ("大家好!\n");	  break;	}    }  /*     if(!initscr()){     return RET_ERR;     }     printw("Hello World!\n");     refresh();     sleep(1);     endwin();   */  return RET_OK;}intreadData (char *filename){  FILE *fp;  char cBuf;  char szBuf[COL_MAX_SIZE];  int iCounter = 0;  if (filename == NULL)    return RET_ERR;  if (!(fp = fopen (filename, "r")))    {      printf ("%s:%s\n", ERR_FILE_NO, filename);      return RET_ERR;    }  g_pRoot = g_pData = (struct _DATA *) malloc (sizeof (struct _DATA));  if (g_pData == NULL)    return RET_ERR;  else    g_pData->pNext = NULL;  //*****begin read date file  while (!feof (fp))    {      if (fread (&cBuf, 1, 1, fp) != 1)	break;      if (iCounter < COL_MAX_SIZE - 1)	{	  szBuf[iCounter++] = cBuf;	  szBuf[iCounter] = '\0';	}      szBuf[COL_MAX_SIZE - 1] = '\0';      if (cBuf == '|' || cBuf == '\n')	{	  szBuf[iCounter - 1] = '\0';	  iCounter = 0;	  g_pData->pCol[g_iCOLCounter] = (char *) malloc (strlen (szBuf));	  ASSERT (g_pData->pCol[g_iCOLCounter], fp);	  strncpy (g_pData->pCol[g_iCOLCounter], szBuf, strlen (szBuf));	  memset (szBuf, 0, sizeof (szBuf));	  g_iCOLCounter++;	}      if (cBuf == '\n')	{	  //printf("run %d|%s|%s\n", g_iRAWCounter, g_pData->pCol[0], g_pData->pCol[1]);	  iCounter = 0;	  g_pData->pNext = (struct _DATA *) malloc (sizeof (struct _DATA));	  ASSERT (g_pData->pNext, fp);	  g_pData = g_pData->pNext;	  g_pData->pNext = NULL;	  g_iRAWCounter++;	  memset (g_pData->pCol, 0, sizeof (char) * COL_NUM);	  g_iCOLCounter = 0;	}    }  g_iTotalNum = g_iRAWCounter;  g_iRAWCounter = 0;  g_pData = g_pRoot;  //*****end   if (fp)    fclose (fp);  return RET_OK;}intreadFormat (char *filename){  FILE *fp, *fp1;  //char cBuf;  long idx1, idx2;  if (filename == NULL)    RET_ERR;  if (!(fp = fopen (filename, "r")))    return RET_ERR;  fseek (fp, 0, SEEK_SET);  while (!feof (fp))    {      if (fgetc (fp) == '<')	{	  idx1 = ftell (fp) + 3;	  switch (fgetc (fp))	    {	    case 'H':	      while (TRUE)		{		  if (fgetc (fp) == '<' &&		      fgetc (fp) == '/' &&		      fgetc (fp) == 'H' && fgetc (fp) == '>')		    {		      idx2 = ftell (fp);		      g_pHeadBuf = (char *) malloc (idx2 - idx1);		      ASSERT (g_pHeadBuf, fp);		      fseek (fp, -(idx2 - idx1), SEEK_CUR);		      fread (g_pHeadBuf, 1, idx2 - idx1 - 4, fp);		      g_pHeadBuf[idx2 - idx1 - 3] = '\0';		      break;		    }		}	      break;	    case 'B':	      while (TRUE)		{		  if (fgetc (fp) == '<' &&		      fgetc (fp) == '/' &&		      fgetc (fp) == 'B' && fgetc (fp) == '>')		    {		      idx2 = ftell (fp);		      g_pBadyBuf[g_iBadyCounter] =			(char *) malloc (idx2 - idx1);		      ASSERT (g_pBadyBuf[g_iBadyCounter], fp);		      fseek (fp, -(idx2 - idx1), SEEK_CUR);		      fread (g_pBadyBuf[g_iBadyCounter], 1, idx2 - idx1 - 4,			     fp);		      g_pBadyBuf[g_iBadyCounter][idx2 - idx1 - 3] = '\0';		      g_iBadyCounter++;		      break;		    }		}	      break;	    case 'E':	      while (TRUE)		{		  if (fgetc (fp) == '<' &&		      fgetc (fp) == '/' &&		      fgetc (fp) == 'E' && fgetc (fp) == '>')		    {		      idx2 = ftell (fp);		      g_pEndBuf = (char *) malloc (idx2 - idx1);		      ASSERT (g_pEndBuf, fp);		      fseek (fp, -(idx2 - idx1), SEEK_CUR);		      fread (g_pEndBuf, 1, idx2 - idx1 - 4, fp);		      g_pEndBuf[idx2 - idx1 - 2] = '\0';		      break;		    }		}	      break;	    }	}    }  if (fp)    fclose (fp);  return RET_OK;}intprocessFormat (int type){  int i;  FILE *tmp_p = NULL;  switch (type)    {    case 0:			//使用數據文件輸入, 打印直至文件結束      for (i = 0; i < g_iTotalNum && g_pData; i++)	{	  tmp_p = openTMP ();	  if (!tmp_p)	    return RET_ERR;/*			if(g_pHeadBuf){			}			for(i=0; g_pBadyBuf[i] && i< LINE_NUM; i++){ 			}*/ if (g_pEndBuf)	    {	      g_pExecBuf = transFormat (g_pEndBuf);	      ASSERT (g_pExecBuf, tmp_p);	      fputs (g_pExecBuf, tmp_p);	      fputs ("", tmp_p);	    }	  closeTMP (tmp_p);	  if (g_iPrintType == 0)	    {	      printf ("按回車打印......");	      getchar ();	      system ("cat tmp.p");	      printf ("打印完成.\n");	    }	  else	    {	      system ("lp tmp.p");	    }	  g_pData = g_pData->pNext;	}      break;    case 1:			//不使用數據文件輸入, 指定打印次數      tmp_p = openTMP ();      if (!tmp_p)	return RET_ERR;      if (g_pHeadBuf)	{	}      else if (g_pBadyBuf[0])	{	}      else if (g_pEndBuf)	{	  g_pExecBuf = transFormat (g_pEndBuf);	  ASSERT (g_pExecBuf, tmp_p);	  fputs (g_pExecBuf, tmp_p);	  fputs ("", tmp_p);	}      else	{	  printf ("請定義固定打印格式及內容:\r\n在<E></E>數據段中!\r\n");	}      closeTMP (tmp_p);      for (i = 0; i < g_iLoopNUM; i++)	{	  if (g_iPrintType == 0)	    {	      printf ("按回車鍵打印......");	      getchar ();	      system ("cat tmp.p");	      printf ("打印完成.\n");	    }	  else	    {	    }	}      break;    }  return RET_OK;}char *transFormat (IN char *inBuf){  int inp = 0, outp = 0, font = 0, tinp = 0, datIdx = 0;  char fontBuf[font_len];  char *tmpPoint = NULL;  if (inBuf == NULL)    return NULL;  if (g_pExecBuf != NULL)    {      free (g_pExecBuf);      g_pExecBuf = NULL;    }  g_pExecBuf = (char *) malloc (strlen (inBuf) * 2 + COL_MAX_SIZE * COL_NUM);  if (g_pExecBuf == (char *) NULL)    return NULL;  if (g_iPrintType == 0)    {				//終端打印      while (inp < strlen (inBuf))	{	  if (inBuf[inp] == '/' && inBuf[inp + 1] == '/')	    {	      //讀注釋,不進行處理.	      tinp = inp;	      while (inBuf[++tinp] != '\n')		{		}	      inp = tinp + 1;	      continue;	    }	  if (inBuf[inp] == '<')	    {	      if (inBuf[inp + 1] == 'F')		{		  font = 0;		  tinp = inp + 2;		  while (tinp++ < inp + font_len)		    {		      if (inBuf[tinp] == '>')			{			  memset (fontBuf, 0, font_len);			  strncpy (fontBuf, &inBuf[inp + 2], tinp - inp - 2);			  font = atoi (fontBuf);			  break;			}		    }		  if (font > 0 && font < FONT_MAX_NUM)		    {		//有字體控制語句		      sprintf (&g_pExecBuf[outp], FONT_BEGIN[font - 1]);		      outp += strlen (FONT_BEGIN[font - 1]);		      inp += tinp - inp + 1;		      continue;		    }		}	      if (inBuf[inp + 1] == '/')		{		  //font 引用上次字體變量font,恢復字體		  tinp = inp + 2;		  while (tinp++ < inp + font_len)		    {		      if (inBuf[tinp] == '>')			{			  break;			}		    }		  if (font > 0 && font < FONT_MAX_NUM)		    {		      sprintf (&g_pExecBuf[outp], FONT_END[font - 1]);		      outp += strlen (FONT_END[font - 1]);		      inp += tinp - inp + 1;		      continue;		    }		}	      if (inBuf[inp + 1] == '$' && g_pData)		{		//如果數據文件存在,從中檢索據段		  font = 0;		  tinp = inp + 2;		  while (++tinp < inp + font_len)		    {		      if (inBuf[tinp] == '>')			{			  memset (fontBuf, 0, font_len);			  //這里存儲數據段索引臨時緩沖			  strncpy (fontBuf, &inBuf[inp + 2], tinp - inp - 2);			  font = atoi (fontBuf);	//font現在用作存儲數據索引			  break;			}		    }		  if (font < COL_NUM && font > 0 && g_pData->pCol[font - 1])		    {		      sprintf (&g_pExecBuf[outp], g_pData->pCol[font - 1],			       strlen (g_pData->pCol[font - 1]));		      outp += strlen (g_pData->pCol[font - 1]);		      inp += tinp - inp + 1;		      continue;		    }		}	    }	  g_pExecBuf[outp++] = inBuf[inp++];	}    }  else if (g_iPrintType == 1)    {				//主機打印    }  return g_pExecBuf;}intreleaseData (){  g_pData = g_pRoot;  do    {    }  while (g_pData->pNext);  return RET_OK;}inthelp (){  printf ("NOTE:\n");  printf ("       program /f:format-file [/d|/n:date-file|number]\n\n");  printf ("字體:\n");  printf ("<F?>text<F?>  F?定義打印字體.\n\n");  printf ("數據引用:\n");  printf ("<$?>          $?表示數據引用列.\n\n");  printf ("例子:\n");  printf ("<H>title($9)</H>\n");  printf ("<B>姓名:$1,年齡:$2,工齡:$3</B>\n");  printf ("<E>finish</E>\n");  return RET_OK;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠狠色丁香婷婷综合激情| 色综合天天做天天爱| 日韩一区二区三区四区| 日韩成人午夜电影| 精品国产一区a| www.欧美色图| 亚洲一二三四区不卡| 欧美日韩国产片| 久久精品久久精品| 国产欧美综合在线| 色综合久久久久综合体桃花网| 亚洲免费在线看| 69堂成人精品免费视频| 国产美女在线精品| 亚洲精品亚洲人成人网| 56国语精品自产拍在线观看| 久久99最新地址| 亚洲欧美另类久久久精品| 欧美理论在线播放| 国产成人综合在线| 一区二区成人在线| 日韩视频一区二区| 97精品超碰一区二区三区| 午夜精品福利一区二区蜜股av| 精品国产三级a在线观看| av网站一区二区三区| 日韩成人精品在线观看| 国产精品免费免费| 欧美日本在线播放| 成人免费看片app下载| 午夜精品一区二区三区电影天堂| 精品国产污网站| 欧美亚男人的天堂| 国产超碰在线一区| 午夜天堂影视香蕉久久| 国产精品短视频| 337p粉嫩大胆噜噜噜噜噜91av| 色综合色狠狠综合色| 久久精品国产网站| 亚洲一二三区视频在线观看| 国产婷婷一区二区| 91精品麻豆日日躁夜夜躁| 成人av集中营| 国产主播一区二区三区| 亚洲动漫第一页| 1区2区3区欧美| 久久精品免费在线观看| 日韩一区二区三区电影 | 亚洲sss视频在线视频| 亚洲国产高清在线观看视频| 欧美r级电影在线观看| 欧美视频日韩视频在线观看| 成人午夜看片网址| 狠狠色丁香久久婷婷综| 亚洲电影你懂得| 亚洲精品菠萝久久久久久久| 国产三级精品三级| 久久亚洲二区三区| 日韩一区二区在线观看| 在线观看精品一区| 一本色道亚洲精品aⅴ| 成人app网站| 国产精品99久久久久久久vr| 精品午夜一区二区三区在线观看| 五月综合激情婷婷六月色窝| 亚洲精品中文在线观看| 国产精品女上位| 欧美国产精品久久| 国产欧美日韩在线观看| 久久众筹精品私拍模特| 欧美成人精品3d动漫h| 91精品国产乱码| 7777精品伊人久久久大香线蕉 | 日本中文字幕一区| 亚洲国产另类av| 亚洲一区成人在线| 亚洲高清中文字幕| 午夜电影网一区| 日韩黄色免费网站| 蜜臀av一区二区三区| 蜜桃一区二区三区在线| 久久www免费人成看片高清| 久久精品久久99精品久久| 久热成人在线视频| 国精产品一区一区三区mba桃花 | 亚洲欧美激情插| 亚洲综合精品自拍| 婷婷六月综合亚洲| 美女视频黄a大片欧美| 久久99精品视频| 国产精品综合一区二区| 高清不卡一区二区| 91极品美女在线| 51精品久久久久久久蜜臀| 欧美一区二区三区免费在线看| 日韩欧美在线1卡| 国产农村妇女精品| 亚洲黄色小视频| 美女mm1313爽爽久久久蜜臀| 国产一区二区视频在线| 盗摄精品av一区二区三区| 欧美综合在线视频| 精品久久一区二区三区| 国产精品久久久久婷婷| 亚洲成人tv网| 韩国欧美国产一区| 91麻豆免费视频| 欧美一区二区性放荡片| 欧美激情综合网| 亚洲高清一区二区三区| 国产毛片一区二区| 欧美午夜电影网| 欧美国产成人精品| 亚洲小说欧美激情另类| 国产精品18久久久久久久网站| 91年精品国产| 2020国产精品久久精品美国| 亚洲欧洲精品一区二区三区不卡| 午夜欧美一区二区三区在线播放| 极品瑜伽女神91| 91福利小视频| 久久尤物电影视频在线观看| 亚洲免费三区一区二区| 麻豆精品视频在线观看| 91视频观看视频| 欧美哺乳videos| 亚洲图片欧美色图| 成人午夜精品在线| 欧美成人一区二区三区在线观看 | 一区二区三区四区激情| 国产最新精品精品你懂的| 在线视频观看一区| 久久久久97国产精华液好用吗| 亚洲成人精品影院| 成人网在线免费视频| 欧美mv日韩mv亚洲| 午夜激情综合网| 95精品视频在线| 国产亚洲婷婷免费| 男男gaygay亚洲| 欧美色网站导航| 日韩毛片视频在线看| 国模套图日韩精品一区二区| 7777精品伊人久久久大香线蕉最新版| 中文字幕制服丝袜成人av| 久久99国产精品久久99| 欧美一区二区三区人| 亚洲国产sm捆绑调教视频| 91捆绑美女网站| 中文字幕乱码日本亚洲一区二区 | 日韩制服丝袜av| 欧美性猛片xxxx免费看久爱| 成人欧美一区二区三区视频网页| 国产麻豆日韩欧美久久| 久久午夜免费电影| 久久精品国产77777蜜臀| 91精品国产综合久久久久久久| 亚洲国产精品影院| 欧美在线免费观看视频| 一区二区三区日本| 在线观看一区日韩| 亚洲一区二区三区中文字幕| 91在线观看地址| 亚洲人精品午夜| 一本到不卡精品视频在线观看| 国产精品美女久久久久久久久| 国产v日产∨综合v精品视频| 久久精品水蜜桃av综合天堂| 国产精品一区二区三区99| 国产欧美日韩精品一区| 国产福利91精品一区二区三区| 日韩精品一区二区三区swag| 麻豆精品在线播放| 久久久久久久久久久久电影| 国产成人在线免费| 国产精品久久久久久久第一福利| 成人av中文字幕| 亚洲精品午夜久久久| 欧美日韩一区高清| 男女激情视频一区| 国产午夜精品一区二区三区四区| 风间由美一区二区三区在线观看| 亚洲欧美综合网| 欧美中文字幕一区二区三区亚洲| 五月激情综合色| 久久亚洲综合色一区二区三区| 高清不卡在线观看| 亚洲一级二级在线| 精品久久国产老人久久综合| 国产精品66部| 亚洲免费av网站| 欧美精品久久99| 国产一区二区三区四区五区入口| 亚洲国产精品精华液ab| 免费欧美高清视频| 日韩av午夜在线观看| 精品在线亚洲视频| 精品一二三四区| 色狠狠色噜噜噜综合网| 不卡的电视剧免费网站有什么|