Определить порядковый номер слова в строке - C (СИ)

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

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

Всем привет!Как определить порядковый номер слова в строке?выбираю какой-нибудь слово-он выводил его порядковый номер(1,2,3....)Если можно без strtok,спасибо!

Решение задачи: «Определить порядковый номер слова в строке»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <glib.h>
  3.  
  4. #define DELIM " \t\n"
  5. typedef char string_t[256];
  6. #define get_string(s) ( scanf("%255[^\n]%*c", (s)) == 1 )
  7. #define get_word(w) ( scanf("%255s%*c", (w)) == 1 )
  8.  
  9. int main(void) {
  10.     string_t str, wrd;
  11.    
  12.     while ( printf("String: ") && get_string(str) && printf("Word: ") && get_word(wrd) ) {
  13.         char ** words = g_strsplit_set(str, DELIM, -1), ** pWord;
  14.         int wordNumber = 0;
  15.        
  16.         for ( pWord = words; *pWord; ++pWord ) {
  17.             if ( ! **pWord )
  18.                 continue;
  19.             ++wordNumber;
  20.             if ( g_str_equal(*pWord, wrd) )
  21.                 break;
  22.         }
  23.        
  24.         if ( *pWord )
  25.             printf("#%d\n", wordNumber);
  26.         else
  27.             printf("Not found.\n");
  28.        
  29.         g_strfreev(words);
  30.     }
  31.    
  32.     return 0;
  33. }

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

В этом коде определен тип данных 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.

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


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

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

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы