Waitrud Weber’s blog

things and reminders for memories

windows-make: csv: CSV frame ... 004

Memory allocation is like the Matrix like Lotus and Excel.
Function realloc and malloc work well, which is a beautiful work in C language.

*

- - - - -
 

read_csv_004.cpp  File modified time Sun Aug 06 22:32:51 2023

0001 #include <tchar.h>
0002 #include <windows.h>
0003 #include <windowsx.h>
0004 
0005 #include <ctime>
0006 
0007 #include <stdio.h>
0008 #include <stdlib.h>
0009 
0010 #include "Print.h"
0011 #include "array_counter.h"
0012 #include "parse.h"
0013 
0014 #include "read_csv_004.h"
0015 
0016 GRID_MATRIX_004* grid_matrix_004 = NULL;
0017 
0018 int puttheword_004 ( int ii, int jj, char* word ) ;
0019 int    initialize_grid_matrix_004 () ;
0020 
0021 //
0022 int puttheword_004 ( int ii, int jj, char* word ) {
0023     int a, i, rmode, ri;
0024 
0025     if ( grid_matrix_004 == NULL ) {
0026         a = initialize_grid_matrix_004 ();
0027     }
0028 
0029     rmode = 0;
0030     if (grid_matrix_004->width_index_num_max <= ii ) {
0031         rmode = 1;
0032         ri = grid_matrix_004->width_index_num_max;
0033         for ( i= 0; ii < grid_matrix_004->width_index_num_max; i++ ) {
0034             grid_matrix_004->width_index_num_max *= 2;
0035         }
0036         grid_matrix_004->grid_matrix = (char***)realloc ( grid_matrix_004->grid_matrix , sizeof(char**) * grid_matrix_004->width_index_num_max );
0037         for ( i = ri; i< grid_matrix_004->height_index_num_max; i++ ) {
0038             grid_matrix_004->grid_matrix[i] = (char**)realloc ( grid_matrix_004->grid_matrix[i], sizeof(char*) * grid_matrix_004->height_index_num_max );
0039         }
0040     }
0041 
0042     if (grid_matrix_004->height_index_num_max <jj ) {
0043         rmode = 2;
0044         for ( i= 0; jj < grid_matrix_004->height_index_num_max; i++ ) {
0045             grid_matrix_004->height_index_num_max *= 2;
0046         }
0047         for ( i = 0; i< grid_matrix_004->height_index_num_max; i++ ) {
0048             grid_matrix_004->grid_matrix[i] = (char**)realloc ( grid_matrix_004->grid_matrix[i], sizeof(char*) * grid_matrix_004->height_index_num_max );
0049         }
0050     }
0051 
0052     aFree(grid_matrix_004->grid_matrix[ii][jj]);
0053     grid_matrix_004->grid_matrix[ii][jj] = (char*) copyof ( word );
0054 
0055     return 0;
0056 }
0057 
0058 
0059 //
0060 int    initialize_grid_matrix_004 () {
0061     int i, j;
0062 
0063     grid_matrix_004 = (GRID_MATRIX_004*) malloc ( sizeof (GRID_MATRIX_004) );
0064     if ( grid_matrix_004 == NULL ) {
0065         exit(-1);
0066     }
0067 
0068     grid_matrix_004->grid_matrix = (char***)malloc ( sizeof(char**) * grid_matrix_004->width_index_num_max );
0069     for ( i = 0; i< grid_matrix_004->width_index_num_max; i++ ) {
0070         grid_matrix_004->grid_matrix[i] = (char**)malloc ( sizeof(char*) * grid_matrix_004->height_index_num_max );
0071         if ( grid_matrix_004->grid_matrix[i] == NULL ) {
0072             exit(-1);
0073         }
0074         for ( j = 0; j< grid_matrix_004->height_index_num_max; j++ ) {
0075             grid_matrix_004->grid_matrix[i][j] = (char*)copyof("g");
0076         }
0077     }
0078 
0079     return  0;
0080 }
0081 

     
 

.\read_csv_004.h  File modified time Mon Aug 07 16:48:05 2023

0001 #ifndef _SETTLE_GRID_004_H_
0002 #define _SETTLE_GRID_004_H_
0003 
0004 typedef struct grid_matrix_struct_004 {
0005     int width_index = 0;
0006     int width_index_num = 0;
0007     int width_index_num_max = 8;
0008     int height_index = 0;
0009     int height_index_num = 0;
0010     int height_index_num_max = 8;
0011     char***    grid_matrix = NULL;
0012 } GRID_MATRIX_004;
0013 
0014 extern int puttheword_004 ( int ii, int jj, char* word ) ;
0015 extern int filesize_004( FILE *fp ) ;
0016 extern int file_all_size ( char* filename, int *file_end ) ;
0017 extern int Set_Logging_read_csv_004 ( Logging* log ) ;
0018 
0019 #endif
0020 

     
 

Frrst arrays should be set as initialization and 8 and 8 in 2 demention but it was not settled, and so, the execution was failed and modified. Allocation is sized only and doesn't ensure any set of intialization with malloc.

 

.\read_csv_004.cpp  File modified time Mon Aug 07 17:44:03 2023

0001 #include <tchar.h>
0002 #include <windows.h>
0003 #include <windowsx.h>
0004 
0005 #include <ctime>
0006 
0007 #include <stdio.h>
0008 #include <stdlib.h>
0009 
0010 #include "Print.h"
0011 #include "array_counter.h"
0012 #include "parse.h"
0013 
0014 #include "log_001.h"
0015 
0016 #include "read_csv_004.h"
0017 
0018 GRID_MATRIX_004* grid_matrix_004 = NULL;
0019 
0020 static Logging* log_001;
0021 static LOG_001* dlog_001 = NULL;
0022 
...
0082 //
0083 int    initialize_grid_matrix_004 () {
0084     int i, j;
0085     char msg[255];
0086 
0087     dlog_001 = log_001->update_log ( (char*)"int    initialize_grid_matrix_004 () starts." );
0088 
0089     grid_matrix_004 = (GRID_MATRIX_004*) malloc ( sizeof (GRID_MATRIX_004) );
0090     if ( grid_matrix_004 == NULL ) {
0091         exit(-1);
0092     }
0093 
0094     grid_matrix_004->width_index_num_max = 8;
0095     grid_matrix_004->height_index_num_max = 8;
0096 
0097     grid_matrix_004->grid_matrix = (char***)malloc ( sizeof(char**) * grid_matrix_004->width_index_num_max );
0098 
0099     sprintf( msg, "grid_matrix_004->grid_matrix |%p| grid_matrix_004->width_index_num_max=%d", grid_matrix_004->grid_matrix, grid_matrix_004->width_index_num_max );
0100     dlog_001 = log_001->update_log ( (char*) msg );
0101 
0102     sprintf( msg, "grid_matrix_004->grid_matrix |%p| grid_matrix_004->height_index_num_max=%d", grid_matrix_004->grid_matrix, grid_matrix_004->height_index_num_max );
0103     dlog_001 = log_001->update_log ( (char*) msg );
0104 
0105     for ( i = 0; i< grid_matrix_004->width_index_num_max; i++ ) {
0106         grid_matrix_004->grid_matrix[i] = (char**)malloc ( sizeof(char*) * grid_matrix_004->height_index_num_max );
0107         if ( grid_matrix_004->grid_matrix[i] == NULL ) {
0108             exit(-1);
0109         }
0110         for ( j = 0; j< grid_matrix_004->height_index_num_max; j++ ) {
0111             grid_matrix_004->grid_matrix[i][j] = (char*)copyof("g");
0112         }
0113     }
0114 
0115     dlog_001 = log_001->update_log ( (char*)"int    initialize_grid_matrix_004 () ends." );
0116     return  0;
0117 }
0118 
0119 
0120 //
0121 int file_all_size ( char* filename, int *file_end ) {
0122     FILE *fp;
0123     char msg[255];
0124 
0125     dlog_001 = log_001->update_log ( (char*)"int file_all_size ( char* filename, int *file_end ) starts." );
0126 
0127     fp = fopen ( filename, "rb" );
0128     *file_end = filesize_004 ( fp );
0129 
0130     fclose(fp);
0131 
0132     sprintf( msg, "msg %s file_end |%p| %d", filename, file_end, *file_end );
0133 
0134     dlog_001 = log_001->update_log ( (char*) msg );
0135 
0136     dlog_001 = log_001->update_log ( (char*)"int file_all_size ( char* filename, int *file_end ) ends." );
0137 }
0138 
0139 //
0140 int filesize_004( FILE *fp ) {
0141 
0142     fseek(fp, 0L, SEEK_END);
0143     int sz = ftell(fp);
0144 
0145     fseek(fp, 0L, SEEK_SET);
0146 
0147     return sz;
0148 }
0149 
0150 //
0151 int Set_Logging_read_csv_004 ( Logging* log ) {
0152     log_001 = (Logging*)log;
0153     return 0;
0154 }
0155 
0156 
0157 

     
 

i 9 void Initialize_firstset_004 () starts.
i 10 1
i 11 2
i 12 3
i 13 4
i 14 void Initialize_firstset_004 () ends.
i 15 int file_all_size ( char* filename, int *file_end ) starts.
i 16 msg 001-filename-20230621.txt file_end |00499260| 404
i 17 int file_all_size ( char* filename, int *file_end ) ends.
i 18 int puttheword_004 ( int ii, int jj, char* word ) starts.
i 19 int    initialize_grid_matrix_004 () starts.
i 20 grid_matrix_004->grid_matrix |025406A8| grid_matrix_004->width_index_num_max=8
i 21 grid_matrix_004->grid_matrix |025406A8| grid_matrix_004->height_index_num_max=8
i 22 int    initialize_grid_matrix_004 () ends.
i 23 msg 1 1 grid matrix g

i 24 msg 1 1 word aaa

i 25 int puttheword_004 ( int ii, int jj, char* word ) end.
i 26 print_log :
LOG_001* Logging::print_log () ends.

     
  .\read_csv_004.cpp  File modified time Wed Aug 09 17:09:54 2023
...
0032 int puttheword_004 ( int ii, int jj, char* word ) {
0033     int a, i, rmode, ri;
0034     char msg[255];
0035 
0036     dlog_001 = log_001->update_log ( (char*)"int puttheword_004 ( int ii, int jj, char* word ) starts." );
0037 
0038     if ( grid_matrix_004 == NULL ) {
0039         a = initialize_grid_matrix_004 ();
0040     }
0041 
0042     rmode = 0;
0043     if (grid_matrix_004->width_index_num_max <= ii ) {
0044         rmode = 1;
0045         ri = grid_matrix_004->width_index_num_max;
0046         for ( i= 0; ii >= grid_matrix_004->width_index_num_max; i++ ) {
0047             grid_matrix_004->width_index_num_max *= 2;
0048         }
0049         printf("out i %d jj %d width_index_num_max %d\r\n", i, jj, grid_matrix_004->width_index_num_max );
0050         grid_matrix_004->grid_matrix = (char***)realloc ( grid_matrix_004->grid_matrix , sizeof(char**) * grid_matrix_004->width_index_num_max );
0051         for ( i = ri; i< grid_matrix_004->height_index_num_max; i++ ) {
0052             grid_matrix_004->grid_matrix[i] = (char**)realloc ( grid_matrix_004->grid_matrix[i], sizeof(char*) * grid_matrix_004->height_index_num_max );
0053         }
0054     }
0055 
0056     if (grid_matrix_004->height_index_num_max <=jj ) {
0057         rmode = 2;
0058         printf("in i %d jj %d height_index_num_max %d\r\n", i, jj, grid_matrix_004->height_index_num_max );
0059         for ( i= 0; jj >= grid_matrix_004->height_index_num_max; i++ ) {
0060             printf("i %d jj %d height_index_num_max %d\r\n", i, jj, grid_matrix_004->height_index_num_max );
0061             grid_matrix_004->height_index_num_max *= 2;
0062         }
0063         printf("out i %d jj %d height_index_num_max %d\r\n", i, jj, grid_matrix_004->height_index_num_max );
0064         for ( i = 0; i< grid_matrix_004->height_index_num_max; i++ ) {
0065             grid_matrix_004->grid_matrix[i] = (char**)realloc ( grid_matrix_004->grid_matrix[i], sizeof(char*) * grid_matrix_004->height_index_num_max );
0066         }
0067     }
0068 
0069     sprintf( msg, "msg %d %d grid matrix %s", ii, jj, (char*) grid_matrix_004->grid_matrix[ii][jj]  );
0070     dlog_001 = log_001->update_log ( (char*) msg );
0071 
0072     aFree(grid_matrix_004->grid_matrix[ii][jj]);
0073     grid_matrix_004->grid_matrix[ii][jj] = (char*) copyof ( word );
0074 
0075 
0076     sprintf( msg, "msg %d %d word %s", ii, jj, word  );
0077     dlog_001 = log_001->update_log ( (char*) msg );
0078 
0079     dlog_001 = log_001->update_log ( (char*)"int puttheword_004 ( int ii, int jj, char* word ) end." );
0080 
0081     return 0;
0082 }
     
  i 14  ii, int jj, char* word ) end.
i 15 int file_all_size ( char* filename, int *file_end ) starts.
i 16 msg 001-filename-20230621.txt file_end |0049A260| 404
i 17 int file_all_size ( char* filename, int *file_end ) ends.
i 18 int puttheword_004 ( int ii, int jj, char* word ) starts.
i 19 int    initialize_grid_matrix_004 () starts.
i 20 grid_matrix_004->grid_matrix |0099CDC8| grid_matrix_004->width_index_num_max=8
i 21 grid_matrix_004->grid_matrix |0099CDC8| grid_matrix_004->height_index_num_max=8
i 22 int    initialize_grid_matrix_004 () ends.
i 23 msg 1 1 grid matrix g
i 24 msg 1 1 word aaa
i 25 int puttheword_004 ( int ii, int jj, char* word ) end.
i 26 int puttheword_004 ( int ii, int jj, char* word ) starts.
i 27 msg 8 8 grid matrix (null)
i 28 msg 8 8 word bbb
i 29 int puttheword_004 ( int ii, int jj, char* word ) end.
     
         
         


*