Определить порядковый номер слова в строке - C (СИ)
Формулировка задачи:
Решение задачи: «Определить порядковый номер слова в строке»
- #include <stdio.h>
- #include <glib.h>
- #define DELIM " \t\n"
- typedef char string_t[256];
- #define get_string(s) ( scanf("%255[^\n]%*c", (s)) == 1 )
- #define get_word(w) ( scanf("%255s%*c", (w)) == 1 )
- int main(void) {
- string_t str, wrd;
- while ( printf("String: ") && get_string(str) && printf("Word: ") && get_word(wrd) ) {
- char ** words = g_strsplit_set(str, DELIM, -1), ** pWord;
- int wordNumber = 0;
- for ( pWord = words; *pWord; ++pWord ) {
- if ( ! **pWord )
- continue;
- ++wordNumber;
- if ( g_str_equal(*pWord, wrd) )
- break;
- }
- if ( *pWord )
- printf("#%d\n", wordNumber);
- else
- printf("Not found.\n");
- g_strfreev(words);
- }
- return 0;
- }
Объяснение кода листинга программы
В этом коде определен тип данных string_t
как массив символов фиксированного размера (256 символов). Затем определены две функции get_string
и get_word
, которые считывают строку и слово из стандартного ввода соответственно.
В основном цикле программы, пока пользователь вводит строки и слова, код разбивает строку на слова с помощью g_strsplit_set
, а затем ищет каждое слово в строке. Если слово найдено, функция printf
выводит порядковый номер слова в строке. Если слово не найдено, выводится сообщение Not found
.
Переменные str
и wrd
используются для хранения текущей строки и текущего слова соответственно.
В конце программы вызывается функция g_strfreev
для освобождения памяти, выделенной для слов в строке.
В этом коде нет использования переменных h
, i
, j
, k
, l
, m
, n
, o
, p
, q
, r
, s
, t
, u
, v
, w
, x
, y
, z
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д