извлечение подстроки из строки с помощью указателей в C - PullRequest
0 голосов
/ 23 сентября 2018

В настоящее время я пытаюсь извлечь подстроку внутри строки буфера.Цель состоит в том, чтобы проанализировать строку по пробелам и символам для последующей компиляции.Строка, которую я пытаюсь проанализировать, является первой строкой моего файла.

void append(char* s, char c)
{
    int len = strlen(s);
    s[len] = c;
    s[len+1] = '\0';
}

int main(void){    
    char str[] = "program example(input, output);";

    char *f = str;
    char *b = str;

    char token[10];

    if(*f != '\0'){
        while (*f != ' ')
        {
            append(token,*f);
            f++;
        }
        f++;
        printf("%s",token);
        token[9] = '\0';
    }
    return 0;
}

Я неправильно очищаю строку токена?Код только возвращает:

program

, но должен возвращать

program
example(input,
output);

1 Ответ

0 голосов
/ 24 сентября 2018

Есть несколько вещей, которые в корне неверны с вашим кодом (возможность переполнения буфера в вашей функции append () и т. Д.).Насколько я понимаю, я изменился настолько, что позволил коду получить желаемый результат.

int main(void){    
    char str[] = "program example(input, output);";

    char *f = str;

    char *token=(char *)malloc((strlen(str)+1)*sizeof(char));
    char *b = token;

    while(*f != '\0'){
        while (*f && *f != ' ')
        {
            *b++=*f;
            f++;
        }
        if(*f) f++;
        *b=0;
        b=token;
        printf("%s\n",token);
    }
    free(token);
    return 0;
}
$ ./a.out 
program
example(input,
output);

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