Обработка строк в Си - PullRequest
       3

Обработка строк в Си

0 голосов
/ 25 октября 2019

У меня возникли проблемы с обработкой строк.

Задача - получить данные от пользователя, используя консоль с несколькими аргументами. напримерпользователь вводит строку в консоли, как показано ниже, например:

1. test 2 a b 
2. test 3 a b c
3. test 4 a b c d

После строки «test», «2» решает, сколько строк должно быть впереди. Это должно быть сделано в одном входе с консоли. Как после строки 2 должны быть «a» и «b» или после «3» должны быть «a», «b», «c». Итак, сейчас я просто определяю фиксированные аргументы командной строки, и консоль принимает это количество строковых аргументов, но я хочу, чтобы пользователь решил в командной строке решить, сколько строковых аргументов он должен передать. Подскажите, пожалуйста, как мне выполнить вышеупомянутую задачу?

Примечание. Я не использую библиотеку string.h из C. Существует специальная библиотека для дескриптора строки.

typedef struct S_STRUCT
{
    char*   str;          
    uint_16 strLength;     
    uint_16 bufferLength;   
}stringStruct;


//// this creates a shadow copy from old string which is "test"


#define STRING__CREATE_SCOPY(name,oldString,offset) 

ant_stringStruct01 name = 
{  
    .str=&(oldString)->str[(offset)],
    .strLength=(oldString)->strLength-(offset),  
    .bufferLength= (oldString)->bufferLength(offset)
}


#define LOGGING_CONSOLE_ARG_CREATE(name,size) uint_32 argPool_ ## name [size][2] = {[0 ... (size-1)][0]=0,[0 ... (size-1)][1]=0,}

///start pos of arg
#define LOGGING_CONSOLE_ARG_S(name,argNumber) argPool_ ## name [argNumber][0]

/// len of Args
#define LOGGING_CONSOLE_ARG_L(name,argNumber) argPool_ ## name [argNumber][1]

main ()

{
char *input  = "test"; // basically the input is entered by user during console like "test".` Next step is to compare the user entered string
if(!strncmp(input, "test",4)  // 
STRING__CREATE_SCOPY(localInput, input, 4); // here it creates a shadow copy from 4th position.

LOGGING_CONSOLE_ARG_CREATE(arg, 2);
int cat = &localInput.str[ANT_LOGGING_CONSOLE_ARG_S_01(arg, 0)])

}

проблема в том, что теперь я могу принимать строковые аргументы после инициализации переменной arg. Но я хочу решить на консоли, сколько аргументов я должен получить от пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...