# define  _CRT_SECURE_NO_WARNINGS # include  <stdio.h> # include  <wchar.h> # include  <locale.h> # define  MAX_LINE_LENGTH  1000 # define  MAX_COLUMNS  50 int  findTargetColumn ( wchar_t *  line) ; 
void  getColumnValue ( wchar_t *  line,  int  target_column,  wchar_t *  columnValue) ; void  process_block ( FILE*  file)  { int  is_data_block_1 =  0 ;  int  is_data_block_0 =  0 ;  int  target_column =  - 1 ;   int  columnNums =  0 ; wchar_t  buffer[ MAX_LINE_LENGTH] ; wchar_t  saved_column[ MAX_COLUMNS] ;   wchar_t  columnValueDif0[ MAX_LINE_LENGTH] ;    while  ( fgetws ( buffer,  sizeof ( buffer)  /  sizeof ( buffer[ 0 ] ) ,  file)  !=  NULL )  { wchar_t *  newline =  wcschr ( buffer,  L'\n' ) ; if  ( newline)  { * newline =  L'\0' ; } if  ( buffer[ 0 ]  ==  L'#' )  { continue ; } if  ( buffer[ 0 ]  ==  L'\0' )  { is_data_block_1 =  0 ; target_column =  - 1 ; continue ; } int  col_number =  0 ; wchar_t *  token =  buffer; while  ( * token &&  col_number <  1 )  { if  ( * token ==  L',' )  { col_number++ ; } token++ ; } if  ( col_number ==  1  &&  ( ( * token)  ==  L'1' ) )  { is_data_block_1 =  1 ; } if  ( is_data_block_1 ==  1 )  { while  ( * token)  { if  ( * token ==  L',' )  { col_number++ ; } else  if  ( * token ==  L'●' )  { wchar_t *  symbolPos =  wcschr ( token, ',' ) ; if  ( symbolPos !=  NULL )  { * symbolPos =  L'\0' ; wchar_t *  temp =  token +  1 ; * symbolPos =  L',' ; 			wchar_t *  temp2 =  symbolPos; wchar_t  data1[ MAX_LINE_LENGTH] ; wchar_t  data2[ MAX_LINE_LENGTH] ; memcpy ( data1,  token+ 1 ,  temp2 -  token) ; int  len =  ( temp2 -  token)  /  sizeof ( wchar_t ) ; data1[ len]  =  '\0' ; wcsncpy ( data2,  token +  1 ,  temp2 -  token) ; data2[ len]  =  '\0' ; } else  if  ( symbolPos ==  NULL )  { 		wchar_t *  temp =  token +  1 ; } saved_column[ columnNums++ ]  =  col_number; } token++ ; } } if  ( col_number ==  1  &&  ( ( * token)  ==  L'0' ) )  { is_data_block_0 =  1 ; } if  ( is_data_block_0 ==  1 )  { for  ( int  i =  0 ;  i <  columnNums;  i++ )  { int  columnNum =  saved_column[ i] ; getColumnValue ( buffer,  columnNum,  columnValueDif0) ; } } is_data_block_1 =  0 ; target_column =  - 1 ; } 
} 
int  findTargetColumn ( wchar_t *  line)  { int  col_number =  0 ; wchar_t *  token =  line; while  ( * token)  { if  ( * token ==  L',' )  { col_number++ ; } else  if  ( * token ==  L'●' )  { return  col_number; } token++ ; } return  - 1 ;  
} 
void  getColumnValue ( wchar_t *  line,  int  target_column,  wchar_t *  columnValue)  { wchar_t *  token =  line; int  col_number =  0 ; while  ( * token)  { if  ( * token ==  L',' )  { col_number++ ; } else  if  ( col_number ==  target_column)  { wchar_t *  start =  token; while  ( * token &&  * token !=  L',' )  { token++ ; } wcsncpy ( columnValue,  start,  token -  start) ; columnValue[ token -  start]  =  L'\0' ;  return ; } token++ ; } 
} int  main ( )  { setlocale ( LC_ALL,  "" ) ;   FILE*  file =  fopen ( "D:\\vs2019C++practise\\YoutubeC\\source\\Test\\CF.csv" ,  "r, ccs=UTF-8" ) ;   if  ( file ==  NULL )  { perror ( "Error opening file" ) ; return  1 ; } process_block ( file) ; fclose ( file) ; return  0 ; 
} # include  <stdio.h> # include  <wchar.h> # include  <locale.h> # define  MAX_LINE_LENGTH  1000 int  findTargetColumn ( wchar_t  * line)  { int  col_number =  0 ; wchar_t  * token =  line; while  ( * token)  { if  ( * token ==  L',' )  { col_number++ ; }  else  if  ( * token ==  L'●' )  { return  col_number; } token++ ; } return  - 1 ;  
} void  process_block ( FILE * file)  { int  is_data_block_1 =  0 ;