Как я могу отделять вектор char?

Привет я нуждаюсь в том, чтобы сделать как поисковая служба, где пользователь вводит слово "карамель" в компьютер и потом вводит букву в компьютер дебет печатать слова, которые ты ищешь, это "карамель"

проблема состоит в том, что пользователь должен вводить информацию в компьютер так "caramelo|el" и не, как делание этого.

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

int main(){

    char cadena[30];
    char subCadena[15];
    int i = 0;

        printf("Bienvenido \n\n");

        printf("Introduce una palabra: >>\n");
            fgets(cadena, sizeof(cadena), stdin);

        printf("\nIntroduce las letras que recuerdas:>>\n");
            fgets(subCadena, sizeof(subCadena), stdin);

        cadena[strlen(cadena) -1] = '\0';
        subCadena[strlen(subCadena) -1] = '\0';

        for(i; (cadena[i] = toupper(cadena[i])); i++);
        for(i = 0; (subCadena[i] = toupper(subCadena[i])); i++);

        if(strstr(cadena, subCadena) != NULL){
        printf("\n\nla palabras que buscas es %s \n\n", cadena);
        }
       else{

        printf("\n\n no se encuentra \n\n");
            }
        return 0;

}
0
задан 16.01.2017, 16:15
0 ответов

Чтобы делать то, к чему ты стремишься, ты можешь прибегать к двум функциям:

  • strtok(): Эта функция разделяет цепь на основании данных delimitadores.
  • strstr(): Эта функция обнаруживает субцепь внутри другой.

Если ты помещаешь их, чтобы работать вместе, ты можешь получать что-то как это:

char buffer[100];
strcpy(buffer,"caramelo|el");
char* palabra = strtok(buffer,"|");
char* fragmento = strtok(NULL,"|");

if( strstr(palabra,fragmento) != NULL )
  puts("Fragmento encontrado\n");
else
  puts("No hay coincidencias\n");

Функция strtok он используется, чтобы отделять слово фрагмента, которое нужно искать, в то время как с strstr мы проверяем, находится ли фрагмент в начальном слове или нет.

PD.: Обе функции находятся в книжном магазине string.h

2
ответ дан 03.12.2019, 17:40
  • 1
    Благодаря бывший очень большого количества помощи –  16.01.2017, 17:03
  • 2
    Если это решает твое сомнение, сообщество ты agradecerí в который ты приклеивал этикетку на нее как " solució n" . Это indicará в других пользователей с сомнениями, сходными с твоей знать, что этот вопрос решает выдвинутую проблему. –  16.01.2017, 17:08
  • 3
    поскольку я могу делать это, я новая на странице –  16.01.2017, 17:14
  • 4
    Я рекомендую тебе продолжать tour благополучного прибытия . Ahí podrá s знать интересные детали на этом портале –  16.01.2017, 17:15