AlbertCerfeda

str_vec.c

Oct 26th, 2021
702
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2.  
  3. struct str_vec {
  4.     char * S[100];
  5.     char buf[1000];
  6.     int num;
  7. };
  8.  
  9. int str_vec_extract (struct str_vec * sv, const char * src) {
  10.     int in_string = 0;
  11.     int buff_index = 0;
  12.     sv->num = 0;
  13.    
  14.     for(int i = 0; src[i] != 0; i++) {
  15.             char c = src[i];
  16.  
  17.             if(in_string) {
  18.                 if(buff_index > 999) {
  19.                     sv->num--; // Do not count the current string
  20.                     return 1;
  21.                 }
  22.                 if (c == '\"') {
  23.                     in_string = 0;
  24.                     sv->buf[buff_index++] = 0;
  25.                 } else {
  26.                     sv->buf[buff_index++] = c;
  27.                 }
  28.                
  29.             } else {
  30.                 if (c == '\"') {
  31.                     in_string = 1;
  32.                     // Next character in the buffer is the first one of the new string
  33.                     if(sv->num > 99)
  34.                         return 2;
  35.                     sv->S[sv->num++] = &(sv->buf[buff_index]);
  36.                 }
  37.             }
  38.     }
  39.     if(in_string) {
  40.         sv->num--; // Do not count the current string
  41.         return 3;
  42.     }
  43.  
  44.     return 0;
  45. };
RAW Paste Data