int main(int argc, char **argv){ if(argc == 1){ int i; array = malloc(sizeof(double)*X*Y); if(array == NULL){ printf("failed : malloc() -- exit.\n"); exit(0); } *array = malloc(sizeof(double *)*Y); if(*array == NULL){ printf("failed : malloc() -- exit.\n"); exit(0); } for(i=0;i<Y;i++){ array[i] = *array+i*X; } array[3][9] = 9; //printf("%d\n",array[3][9]); read_to_array_from_stdin(); }else if(argc == 2){ //for test print_def(); exit(0); }else if(argc == 3){ sscanf(argv[1],"%d",&wid); sscanf(argv[2],"%d",&hei); print_head(wid*init_x_scale, hei*init_y_scale); print_def(); print_offset(init_x_scale,init_y_scale,-1,0); print_next_from_stdin(); print_tail(); exit(0); } }
/* my_tail: program that outputs last n lines of input */ int main(int argc, char *argv[]) { int i, c, nb, nc; int end_lines = 0; /* number of lines to print from end of input */ int read_start; char *arg_str; char *lineptr[MAXLINES]; end_lines = DEFAULT; while (--argc > 0 && ((c = (*++argv)[0]) == '-')) switch(c) { case '-': /* col_start */ arg_str = ++argv[0]; end_lines = atoi(arg_str); break; default: printf("tail: illegal option %c\n", c); argc = ERROR; break; } if (end_lines >= MAXLINES) { printf("ERROR: REQUESTED TAIL TOO LARGE\n"); return -1; } else { read_start = get_input(lineptr, end_lines); print_tail(lineptr, read_start, end_lines); } return 0; }
int main(int argc, char **argv){ if(argc == 3){ sscanf(argv[1],"%d",&wid); sscanf(argv[2],"%d",&hei); print_head(wid*init_x_scale, hei*init_y_scale); print_def(); print_offset(init_x_scale,init_y_scale,-1,hei-1); print_next_from_stdin(); print_tail(); exit(0); } return(0); }
int main(int argc, char **argv) { print_head(); print_constant_int("UM_KERN_PAGE_SIZE", PAGE_SIZE); print_constant_str("UM_KERN_EMERG", KERN_EMERG); print_constant_str("UM_KERN_ALERT", KERN_ALERT); print_constant_str("UM_KERN_CRIT", KERN_CRIT); print_constant_str("UM_KERN_ERR", KERN_ERR); print_constant_str("UM_KERN_WARNING", KERN_WARNING); print_constant_str("UM_KERN_NOTICE", KERN_NOTICE); print_constant_str("UM_KERN_INFO", KERN_INFO); print_constant_str("UM_KERN_DEBUG", KERN_DEBUG); print_tail(); return(0); }
static void cdash_show_pass(TestReporter *reporter, const char *file, int line, const char *message, va_list arguments) { double exectime; CDashMemo *memo; const char *name = get_current_from_breadcrumb((CgreenBreadcrumb *)reporter->breadcrumb); (void)message; (void)arguments; memo = (CDashMemo *)reporter->memo; memo->testfinished = cdash_current_time(NULL); exectime = cdash_elapsed_time(memo->teststarted, memo->testfinished); print_test_header(memo, "passed", name, file, line); print_results_header(memo, name, exectime); print_measurement(memo, ""); print_tail(memo); }
static void show_incomplete(TestReporter *reporter, const char *file, int line, const char *message, va_list arguments) { const char *name; char buffer[1000]; float exectime; CDashMemo *memo; memo = (CDashMemo *)reporter->memo; memo->testfinished = cdash_current_time(NULL); exectime = (float)cdash_elapsed_time(memo->teststarted, memo->testfinished); name = get_current_from_breadcrumb((CgreenBreadcrumb *)reporter->breadcrumb); print_test_header(memo, "incomplete", name, file, line); print_results_header(memo, name, exectime); vsprintf(buffer, (message == NULL ? "Problem" : message), arguments); print_measurement(memo, buffer); print_tail(memo); }
/* * print mode, print data from tsar.data */ void running_print() { int print_num = 1, re_p_hdr = 0; char line[LEN_10240] = {0}; char filename[LEN_128] = {0}; long n_record = 0, s_time; FILE *fp; fp = init_running_print();//初始化,找到数据在哪个文件的什么部位。打印头部信息等。 /* skip first record */ if (collect_record_stat() == 0) { do_debug(LOG_INFO, "collect_record_stat warn\n"); } while (1) { if (!fgets(line, LEN_10240, fp)) { if (conf.print_file_number <= 0) { break; } else {//得读取下一个文件了。 conf.print_file_number = conf.print_file_number - 1; memset(filename, 0, sizeof(filename)); if (conf.print_file_number == 0) { sprintf(filename, "%s", conf.output_file_path); } else { sprintf(filename, "%s.%d", conf.output_file_path, conf.print_file_number); } if (fclose(fp) < 0) { do_debug(LOG_FATAL, "fclose error:%s", strerror(errno)); } fp = fopen(filename, "r"); if (!fp) { do_debug(LOG_FATAL, "unable to open the log file %s.\n", filename); } continue; } } int k = check_time(line); if (k == 1) { continue; } if (k == 3) { break; } /* collect data then set mod->summary */ read_line_to_module_record(line); if (!(print_num % DEFAULT_PRINT_NUM) || re_p_hdr) { /* get the header will print every DEFAULT_PRINT_NUM */ print_header(); re_p_hdr = 0; print_num = 1; } /* exclued the two record have same time */ if (!(s_time = set_record_time(line))) { continue; } /* reprint header because of n_item's modifing */ if (!collect_record_stat()) { re_p_hdr = 1; continue; } print_record_time(s_time); print_record(); n_record++; print_num++; memset(line, 0, sizeof(line)); } if (n_record) { printf("\n"); print_tail(TAIL_MAX); print_tail(TAIL_MEAN); print_tail(TAIL_MIN); } if (fclose(fp) < 0) { do_debug(LOG_FATAL, "fclose error:%s", strerror(errno)); } fp = NULL; }
/* Print the top of the C file */ void print_head () { fprintf (bfout, "#include <stdio.h>\n"); fprintf (bfout, "#include <stdlib.h>\n"); fprintf (bfout, "#include <string.h>\n"); if (dump_core) fprintf (bfout, "#include <signal.h>\n"); if (bfbignum) fprintf (bfout, "#include <gmp.h>\n"); if (bfthreads) fprintf (bfout, "#include <pthread.h>\n"); fprintf (bfout, "\n"); /* Type define */ fprintf (bfout, "#define BFTYPE %s\n\n", bfstr_type); /* Thread struct */ if (bfthreads) { fprintf (bfout, "typedef struct BFTYPE {\n"); fprintf (bfout, " %s val;\n", bfstr_htype); fprintf (bfout, " pthread_mutex_t lock;\n"); fprintf (bfout, "} BFTYPE;\n\n"); fprintf (bfout, "BFTYPE *hptr[%d]; /* Thread pointers */\n\n", bfthreads); } /* resize prototype */ if (dynamic_mem) fprintf (bfout, "void bf_buffinc (BFTYPE **ptr);\n\n"); /* Main memory */ char *bfinit = " = { 0 }"; if (bfbignum) bfinit = ""; if (dynamic_mem) fprintf (bfout, "BFTYPE *%s;\n\n", bfstr_buffer); else fprintf (bfout, "BFTYPE %s[%d]%s;\n\n", bfstr_buffer, mem_size, bfinit); if (bfthreads && dynamic_mem) fprintf (bfout, "pthread_mutex_t mem_lock;\n\n"); /* Track buffer size */ if (dynamic_mem || check_bounds || dump_core) fprintf (bfout, "int %s = %d; /* Buffer size */\n\n", bfstr_bsize, mem_size); /* bignum init */ if (bfbignum) { char *thread_str; if (bfthreads) thread_str = ".val"; else thread_str = ""; fprintf (bfout, "/* Initialize bignum values */\n"); fprintf (bfout, "void bignum_init (BFTYPE *buff, int n) {\n"); fprintf (bfout, " int i;\n"); fprintf (bfout, " for (i = 0; i < n; i++)\n"); fprintf (bfout, " mpz_init (buff[i]%s);\n", thread_str); fprintf (bfout, "}\n\n"); } /* mutex */ if (bfthreads) { /* init */ fprintf (bfout, "/* Initialize mutex locks */\n"); fprintf (bfout, "void mutex_init (BFTYPE *buff, int n) {\n"); fprintf (bfout, " int i;\n"); fprintf (bfout, " for (i = 0; i < n; i++) {\n"); fprintf (bfout, " pthread_mutex_init (&buff[i].lock, NULL);\n"); if (bfbignum) fprintf (bfout, " mpz_init (buff[i].val);\n"); else fprintf (bfout, " buff[i].val = 0;\n"); fprintf (bfout, " }\n"); fprintf (bfout, "}\n\n"); /* inc */ fprintf (bfout, "void cell_inc (int i, int n) {\n"); if (dynamic_mem) { fprintf (bfout, " pthread_mutex_lock (&mem_lock);\n"); fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); } else { fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); fprintf (bfout, " pthread_mutex_lock (&ptr->lock);\n"); } if (bfbignum) { fprintf (bfout, " mpz_add_ui (ptr->val, ptr->val, n);\n"); } else { fprintf (bfout, " ptr->val += n;\n"); } if (dynamic_mem) fprintf (bfout, " pthread_mutex_unlock (&mem_lock);\n"); else fprintf (bfout, " pthread_mutex_unlock (&ptr->lock);\n"); fprintf (bfout, "}\n\n"); /* dec */ fprintf (bfout, "void cell_dec (int i, int n) {\n"); if (dynamic_mem) { fprintf (bfout, " pthread_mutex_lock (&mem_lock);\n"); fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); } else { fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); fprintf (bfout, " pthread_mutex_lock (&ptr->lock);\n"); } if (bfbignum) { fprintf (bfout, " mpz_sub_ui (ptr->val, ptr->val, n);\n"); } else { fprintf (bfout, " ptr->val -= n;\n"); } if (dynamic_mem) fprintf (bfout, " pthread_mutex_unlock (&mem_lock);\n"); else fprintf (bfout, " pthread_mutex_unlock (&ptr->lock);\n"); fprintf (bfout, "}\n\n"); /* get conditional */ fprintf (bfout, "int cell_cond (int i) {\n"); if (dynamic_mem) { fprintf (bfout, " pthread_mutex_lock (&mem_lock);\n"); fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); } else { fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); fprintf (bfout, " pthread_mutex_lock (&ptr->lock);\n"); } if (bfbignum) { fprintf (bfout, " int out = !mpz_fits_sint_p (ptr->val) ||" " mpz_get_ui (ptr->val) != 0;\n"); } else { fprintf (bfout, " int out = ptr->val;\n"); } if (dynamic_mem) fprintf (bfout, " pthread_mutex_unlock (&mem_lock);\n"); else fprintf (bfout, " pthread_mutex_unlock (&ptr->lock);\n"); fprintf (bfout, " return out;\n"); fprintf (bfout, "}\n\n"); /* get */ fprintf (bfout, "char cell_get (int i) {\n"); if (dynamic_mem) { fprintf (bfout, " pthread_mutex_lock (&mem_lock);\n"); fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); } else { fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); fprintf (bfout, " pthread_mutex_lock (&ptr->lock);\n"); } if (bfbignum) fprintf (bfout, " char out = (char) mpz_get_ui (ptr->val);\n"); else fprintf (bfout, " char out = (char) ptr->val;\n"); if (dynamic_mem) fprintf (bfout, " pthread_mutex_unlock (&mem_lock);\n"); else fprintf (bfout, " pthread_mutex_unlock (&ptr->lock);\n"); fprintf (bfout, " return out;\n"); fprintf (bfout, "}\n\n"); /* set */ fprintf (bfout, "void cell_set (int i, char in) {\n"); if (dynamic_mem) { fprintf (bfout, " pthread_mutex_lock (&mem_lock);\n"); fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); } else { fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); fprintf (bfout, " pthread_mutex_lock (&ptr->lock);\n"); } if (bfbignum) fprintf (bfout, " mpz_set_ui " "(ptr->val, (unsigned long int) in);\n"); else fprintf (bfout, " ptr->val = in;\n"); if (dynamic_mem) fprintf (bfout, " pthread_mutex_unlock (&mem_lock);\n"); else fprintf (bfout, " pthread_mutex_unlock (&ptr->lock);\n"); fprintf (bfout, "}\n\n"); /* move */ fprintf (bfout, "void cell_move (int i, int m) {\n"); if (dynamic_mem) { fprintf (bfout, " pthread_mutex_lock (&mem_lock);\n"); fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); } else { fprintf (bfout, " BFTYPE *ptr = hptr[i];\n"); fprintf (bfout, " pthread_mutex_lock (&ptr->lock);\n"); } fprintf (bfout, " hptr[i] += m;\n"); fprintf (bfout, " int oob = hptr[i] - %s >= %s;\n", bfstr_buffer, bfstr_bsize); if (dynamic_mem) fprintf (bfout, " pthread_mutex_unlock (&mem_lock);\n"); else fprintf (bfout, " pthread_mutex_unlock (&ptr->lock);\n"); fprintf (bfout, " if (oob)\n"); fprintf (bfout, " bf_buffinc (&%s);\n", bfstr_ptr); fprintf (bfout, "}\n\n"); } /* Thread function prototypes */ if (bfthreads) { fprintf (bfout, "/* Thread functions */\n"); int i; for (i = 0; i < bfthreads; i++) fprintf (bfout, "void *bf%d (void *);\n", i); fprintf (bfout, "\n"); } /* core dumps */ if (dump_core) { char *thread_str; if (bfthreads) thread_str = ".val"; else thread_str = ""; fprintf (bfout, "/* Dump the memory core */\n"); fprintf (bfout, "void dump_core (BFTYPE *buff, int n) {\n"); fprintf (bfout, " FILE *fp = fopen (\"bf-core\", \"w\");\n"); fprintf (bfout, " if (fp == NULL)\n"); fprintf (bfout, " return;\n\n"); fprintf (bfout, " int i;\n"); if (bfbignum) { fprintf (bfout, " char *numstr;\n"); fprintf (bfout, " for (i = 0; i < n; i++) {\n"); fprintf (bfout, " numstr = mpz_get_str(NULL, 10, buff[i]%s);\n", thread_str); fprintf (bfout, " fprintf (fp, \"%%s\\n\", numstr);\n"); fprintf (bfout, " free (numstr);\n"); fprintf (bfout, " }\n"); } else { fprintf (bfout, " for (i = 0; i < n; i++)\n"); fprintf (bfout, " fprintf (fp, \"%%d\\n\", (int) buff[i]%s);\n\n", thread_str); } fprintf (bfout, " fclose (fp);"); fprintf (bfout, "}\n\n"); /* Signal handler */ fprintf (bfout, "void int_handle (int sig) {\n"); fprintf (bfout, " dump_core (%s, %s);\n", bfstr_buffer, bfstr_bsize); fprintf (bfout, " exit (EXIT_SUCCESS);"); fprintf (bfout, "}\n\n"); } if (dynamic_mem) { /* Print memory resize function */ fprintf (bfout, "/* Resize memory */\n"); fprintf (bfout, "void bf_buffinc (BFTYPE **ptr) {\n"); if (bfthreads) { fprintf (bfout, " pthread_mutex_lock (&mem_lock);\n"); fprintf (bfout, " int offsets[%d];\n", bfthreads); int i; for (i = 0; i < bfthreads; i++) fprintf (bfout, " offsets[%d] = hptr[%d] - %s;\n", i, i, bfstr_buffer); } fprintf (bfout, " int offset = *ptr - %s;\n\n", bfstr_buffer); fprintf (bfout, " int old_bsize = %s;\n", bfstr_bsize); fprintf (bfout, " %s *= %d;\n", bfstr_bsize, mem_grow_rate); fprintf (bfout, " if (offset > %s)\n", bfstr_bsize); fprintf (bfout, " %s = offset;\n\n", bfstr_bsize); fprintf (bfout, " %s = (BFTYPE *) realloc ((void *) %s, " "%s * sizeof (BFTYPE));\n", bfstr_buffer, bfstr_buffer, bfstr_bsize); fprintf (bfout, " if (!%s) {\n", bfstr_buffer); fprintf (bfout, " fprintf (stderr, \"%s:%d:%s\\n\");\n", bfstr_name, lineno, bfstr_memerr); fprintf (bfout, " abort ();\n }\n\n"); /* clear */ if (bfbignum && !bfthreads) { fprintf (bfout, " bignum_init ((%s + old_bsize), " "%s - old_bsize);\n", bfstr_buffer, bfstr_bsize); fprintf (bfout, " *ptr = %s + offset;\n", bfstr_buffer); } else if (bfthreads) { fprintf (bfout, " mutex_init ((%s + old_bsize), " "%s - old_bsize);\n", bfstr_buffer, bfstr_bsize); int i; for (i = 0; i < bfthreads; i++) fprintf (bfout, " hptr[%d] = %s + offsets[%d];\n", i, bfstr_buffer, i); fprintf (bfout, " pthread_mutex_unlock (&mem_lock);\n"); } else { fprintf (bfout, " memset ((%s + old_bsize), 0, " "(%s - old_bsize) * sizeof (BFTYPE));\n", bfstr_buffer, bfstr_bsize); fprintf (bfout, " *ptr = %s + offset;\n", bfstr_buffer); } fprintf (bfout, "}\n\n"); /* main */ fprintf (bfout, "int main () {\n"); fprintf (bfout, " %s = calloc (%s * sizeof (BFTYPE), 1);\n\n", bfstr_buffer, bfstr_bsize); if (!bfthreads) fprintf (bfout, " BFTYPE *%s = %s;\n\n", bfstr_ptr, bfstr_buffer); } else { /* main */ fprintf (bfout, "int main () {\n"); if (!bfthreads) fprintf (bfout, " BFTYPE *%s = %s;\n\n", bfstr_ptr, bfstr_buffer); } if (bfbignum && !bfthreads) { fprintf (bfout, " bignum_init (%s, %d);\n\n", bfstr_buffer, mem_size); } if (dump_core) fprintf (bfout, " signal (SIGINT, int_handle);\n\n"); /* Spawn threads. */ if (bfthreads) { if (dynamic_mem) fprintf (bfout, " pthread_mutex_init (&mem_lock, NULL);\n"); else fprintf (bfout, " mutex_init (%s, %d);\n\n", bfstr_buffer, mem_size); /* Initialize pointers */ int i; for (i = 0; i < bfthreads; i++) fprintf (bfout, " hptr[%d] = %s;\n", i, bfstr_buffer); fprintf (bfout, "\n"); /* Create */ fprintf (bfout, " pthread_t bfthread[%d];\n", bfthreads); for (i = 0; i < bfthreads; i++) fprintf (bfout, " pthread_create " "(&bfthread[%d], NULL, bf%d, NULL);\n", i, i); fprintf (bfout, "\n"); /* Join */ for (i = 0; i < bfthreads; i++) fprintf (bfout, " pthread_join " "(bfthread[%d], NULL);\n", i); fprintf (bfout, "\n"); print_tail (); fprintf (bfout, "\n"); } }
void pay(struct set_t *store, struct sales_promotion *promotions, struct set_t *shopping) { struct set_t *pomo_set; //购物车中的促销商品 struct set_t* double_pomo_set; //购物车中同时享受两种优惠的商品 struct set_t *temp1, *temp2; //临时变量 struct set_t *pure_goods; //购物车中不享受优惠的商品 struct promotion_one_info *pomo_info; //促销活动 enum promotion_category pomo_priority; //如果商品享受两种优惠,应该优先使用哪种 float cost_save; //优惠节约金额 float expenditure; //消费总计 struct free_one_list *free_list; //赠送的商品 cost_save = expenditure = 0; pomo_info = promotions->promotion_all_info;//指向优惠活动的头指针 pomo_priority = promotions->priority; free_list = NULL; double_pomo_set = shopping; pure_goods = shopping; while(pomo_info) { //循环遍历每种活动 //先计算享受两种优惠的商品 temp1 = double_pomo_set; double_pomo_set = set_inter(double_pomo_set, pomo_info->sales_set); if (temp1 != shopping) { set_free(&temp1); }/*释放set_inter生成的临时的set*/ //计算没有优惠的商品 temp2 = pure_goods; pure_goods = set_minus(pure_goods, pomo_info->sales_set); if(temp2 != shopping) { set_free(&temp2); }/*释放set_minus生成的临时的set*/ pomo_info = pomo_info->next_promotion; }/*while*/ //打印小票头信息 print_title(); //计算没有优惠 settle_product(store, pure_goods, &cost_save, &expenditure); //计算二重优惠 settle_double_promotion(store, pomo_priority, double_pomo_set, &cost_save, &expenditure); //计算一种优惠的商品,并结算 for (pomo_info = promotions->promotion_all_info;\ pomo_info; pomo_info = pomo_info->next_promotion){ switch (pomo_info->type) { case DISCOUNT: //95折扣 temp1 = set_inter(pomo_info->sales_set,shopping); settle_discount(store, temp1, double_pomo_set, &cost_save, &expenditure); if(temp1) set_free(&temp1); break; case FREE_ONE: //买二送一 temp1 = set_inter(pomo_info->sales_set,shopping); settle_free_one(store, temp1, double_pomo_set, &cost_save, &expenditure); if(temp1) set_free(&temp1); break; default: assert(!"no this promotion\n"); break; }/*switch*/ }/*for*/ //赠送商品列表打印 free_list = put_free_one_list(NULL, 0); free_one_print(free_list); //小票末尾信息打印 print_tail(cost_save, expenditure); }