Определить порядковый номер слова в строке - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д