После использования функции 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;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется строка-разделитель и её длина
- Определяется количество элементов в массиве
- В функции
Strtok
инициализируется указатель на первый элемент в строкеs
- В цикле происходит разделение строки
s
на токены с помощью функцииstrtok
и сохранение их в массивеa
- В функции
Print
происходит вывод элементов массиваa
на экран - В функции
main
считывается строка с помощьюfgets
, вызывается функцияStrtok
для разделения строки на токены и сохранения их в массивеa
, затем вызывается функцияPrint
для вывода элементов массива на экран - Код не содержит обработку ошибок, в том числе проверку на достаточность памяти для выделения массива
a
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д