После использования функции strtok, как обращаться к лексемам? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

После использования функции strtok, как мне обращаться к лексемам? Допустим разбил я предложение мама мыла раму на 3 слова, теперь мне нужно сравнить первое и второе слово, одинаковые ли они? Как это реализовать?

Решение задачи: «После использования функции strtok, как обращаться к лексемам?»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define DELIM " .,;:\n\t"
#define N 1024
 
void Strtok(char *s, char **a, int *pn)
{
    char *token;
    for(*pn = 0, token = strtok(s, DELIM); token != NULL; token = strtok(NULL, DELIM))
    {
        a[*pn] = (char *)malloc((strlen(token) + 1) * sizeof(*token));
        strcpy(a[(*pn)++], token);
    }
}
 
void Print(char **a, int n)
{
    int i;
    for(i = 0; i < n; i++)
        puts(a[i]);
}
 
int main( )
{
    char s[N], *a[N];
    int n;
    fgets(s, N, stdin);
    Strtok(s, a, &n);
    Print(a, n);
    return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяется строка-разделитель и её длина
  3. Определяется количество элементов в массиве
  4. В функции Strtok инициализируется указатель на первый элемент в строке s
  5. В цикле происходит разделение строки s на токены с помощью функции strtok и сохранение их в массиве a
  6. В функции Print происходит вывод элементов массива a на экран
  7. В функции main считывается строка с помощью fgets, вызывается функция Strtok для разделения строки на токены и сохранения их в массиве a, затем вызывается функция Print для вывода элементов массива на экран
  8. Код не содержит обработку ошибок, в том числе проверку на достаточность памяти для выделения массива a

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5
Похожие ответы