C программа для замены всех вхождений символа в строке - PullRequest
0 голосов
/ 19 января 2019

Я хочу написать программу на C для поиска всех вхождений слова в заданной строке и написать все вхождения слова заглавными буквами.

Пример

Input

Строка ввода: доброе утро. хорошего дня.

Выход Слово «хорошо» было найдено в месте 1 Слово «хорошо» было найдено в месте 22 * ​​1009 *

Доброе утро. хорошего дня.

Я написал следующий код

#include <stdio.h>
#include <string.h>

void main()
{
  char str[1000], pat[20] = "good";
  int i = 0, j, mal = 0, flag = 0;
  printf("Enter the string :");
  gets(str);
  while (str[i] != '\0')
  {
    if (str[i] == pat[0])
    {
      j = 1;
      //if next character of string and pat same
      while(pat[j] != '\0' && str[j + i] != '\0' && pat[j] == str[j + i])
      {
        j++;
        flag = 1;
      }
      if (pat[j] == '\0')
      {
        mal += 1;
        printf("\n The word was found at location %d.\n" , i + 1);
      }
    }
    i++;
    if (flag == 0)
    {
      if (str[j + i] == '\0')
        printf(" The word was not found ") ;
    }
  }
  printf("The word was found a total of %d times", mal);
}

Как я могу преобразовать слово «хорошо» в заглавные буквы?

Когда я использую функцию toupper из библиотеки C ctype.h, весь текст преобразуется в заглавные буквы. ты можешь помочь мне, пожалуйста?

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Ваш код может дать сбой, если нет ввода.

Используйте стандартную функцию strstr().Зачем изобретать велосипед?Вы также можете улучшить сложность кода.Смотрите эту ссылку:

https://www.geeksforgeeks.org/frequency-substring-string/

0 голосов
/ 19 января 2019

У меня пока нет разрешения на комментарии, поэтому я должен ответить вам здесь.

Переменная char кодируется 8 битами, поэтому она может иметь 256 значений [0,255].Печатные символы можно найти в таблице ASCII , где вы можете видеть, что символ a равен десятичному значению 97.

Если вы рассматриваете символы как десятичное значение, яЯ уверен, что вы сами сможете выяснить, как перейти от a (97) к A (65), чтобы вы могли выполнить ту же операцию для любого символа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...