Bugfix: Really fix the crash in bm.c, do memory checking after each allocation, corre...
[2dmatching.git] / helper.c
blobb54ed64cedfa5898700222d1c4aa992d319d0160
1 /*A list of helper functions*/
3 #include "code.h"
4 #include <time.h>
6 /*Prints text and pattern*/
7 void print_pattern( char **text, char **pattern, int m, int n )
9 unsigned int i,j;
11 /*Prints the pattern*/
12 for( j = 0; j < m; j++ ) {
13 for( i = 0; i < m; i++ )
14 printf("%i",pattern[j][i]);
16 printf("\n");
19 /*Prints the text*/
20 for( j = 0; j < n; j++ ) {
21 for( i = 0; i < n; i++ )
22 printf("%i",text[j][i]);
24 printf("\n");
28 /*Returns the square of a number*/
29 int power(int number, int power)
31 int i, returned_number = number;
33 for( i = 1; i < power; i++ )
34 returned_number = returned_number * number;
36 return returned_number;
39 /*Loads text and pattern into tables*/
40 void load_files( char **text, char **pattern, int m, int n )
42 FILE *text_fp, *pattern_fp;
44 unsigned int i,j;
46 int c;
48 /*Pattern loading*/
49 pattern_fp = fopen("data/pattern", "r");
51 for(j = 0; j < m; j++)
52 for(i = 0; i < m; i++) {
53 c = fgetc( pattern_fp );
54 /* If we encounter '\n' pull the next character*/
55 if( c != 10 )
56 pattern[j][i] = c;
57 else
58 pattern[j][i] = fgetc( pattern_fp );
61 fclose(pattern_fp);
63 /*Text loading*/
64 text_fp = fopen("data/text", "r");
66 for( j = 0; j < n; j++ )
67 for( i = 0; i < n; i++ ) {
68 c = fgetc (text_fp);
69 /* If we encounter '\n' pull the next character*/
70 if( c != 10 )
71 text[j][i] = c;
72 else
73 text[j][i] = fgetc( text_fp );
76 fclose(text_fp);
79 /*Loads text and pattern into tables*/
80 void create_files(int pattern_size, int text_size, int alphabet)
82 FILE *text_fp, *pattern_fp;
84 unsigned int i,j;
86 /* initialize random seed: */
87 srand( time( NULL ) );
89 /*Creating pattern*/
90 pattern_fp = fopen("data/pattern", "w");
92 for( j = 0; j < pattern_size; j++ ) {
93 for( i = 0; i < pattern_size; i++ )
94 fputc( rand() % alphabet + 1, pattern_fp );
95 fputc( 10, pattern_fp );
98 fclose( pattern_fp );
100 /*Creating text*/
101 text_fp = fopen("data/text", "w");
103 for( j = 0; j < text_size; j++ ){
104 for( i = 0; i < text_size; i++ )
105 fputc ( rand() % alphabet + 1, text_fp );
106 fputc ( 10, text_fp );
109 fclose( text_fp );