Boa tarde, estou tendo dificuldade em fazer um código, utilizando ponteiro ( ou apontadores), para verificar se uma palavra está contida num determinado texto. Tanto os textos e as palavras são pré-determinadas pelo programa, como mostrado a seguir:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define bool int
#define TRUE 1
#define FALSE 0
#define MAX_WORD_LENGTH 21
#define MAX_TEXT_LENGTH 81
#define MAX_WORD 20
int escolha_frase(){
int num_frase, num_palavra;
printf("Escolha umas das seguintes frases: ");
printf("1-A string that contains a dog and a cat");
printf("2-A string that contains camel and mouse");
printf("3-The dog was eating with the horse");
printf("4-The camel drunk all the water");
printf("5-The mouse entered into the pipe");
printf("6-Uma string que pode conter dog ou camel");
printf("7-The horse is bigger than the dog");
printf("Frase: "); scanf(" %d", &num_frase);
if (num_frase<1 && num_frase>7)
{
printf("Erro: Frase não encontrada\n");
exit(1);
}
return num_frase;
}
int escolha_palavra(){
int num_frase, num_palavra;
printf("Escolha uma das seguintes palavras: ");
printf("1-dog");
printf("2-horse");
printf("3-cat");
printf("4-mouse");
printf("5-camel");
printf("6-pig");
printf("Palavra: "); scanf(" %d", &num_palavra);
if (num_palavra<1 && num_palavra>7)
{
printf("Erro: palavra não encontrada\n");
exit(1);
}
return num_palavra;
}
void ver_se_contem (char *frase_actual, char *palavra_actual){
char result;
printf("Frase: %s\n", frase_actual);
printf("Palavra: %s\n", palavra_actual);
result = strstr(frase_actual, palavra_actual);
if (result)
{
printf("Sim, a palavra está contida da frase\n");
}
else
{
printf("Não está contida na frase\n");
}
}
void main() {
char frase1 [MAX_TEXT_LENGTH] = "A string that contains a dog and a cat";
char frase2 [MAX_TEXT_LENGTH] = "A string that contains camel and mouse";
char frase3 [MAX_TEXT_LENGTH] = "The dog was eating with the horse";
char frase4 [MAX_TEXT_LENGTH] = "The camel drunk all the water";
char frase5 [MAX_TEXT_LENGTH] = "The mouse entered into the pipe";
char frase6 [MAX_TEXT_LENGTH] = "Uma string que pode conter dog ou camel";
char frase7 [MAX_TEXT_LENGTH] = "The horse is bigger than the dog";
char palavra1 [MAX_WORD_LENGTH] = "dog";
char palavra2 [MAX_WORD_LENGTH] = "horse";
char palavra3 [MAX_WORD_LENGTH] = "cat";
char palavra4 [MAX_WORD_LENGTH] = "mouse";
char palavra5 [MAX_WORD_LENGTH] = "camel";
char palavra6 [MAX_WORD_LENGTH] = "pig";
char *frase_ptr [MAX_WORD]; // para apontar a frases
char *pal_ptr [MAX_WORD]; // para apontar a palavras
char ** frase, ** palavra;
char palavra_actual [MAX_TEXT_LENGTH];
char frase_actual [MAX_TEXT_LENGTH];
int num_frase, num_palavra; // para conter a escolha do util.
frase_ptr [0] = frase1;
frase_ptr [1] = frase2;
frase_ptr [2] = frase3;
frase_ptr [3] = frase4;
frase_ptr [4] = frase5;
frase_ptr [5] = frase6;
frase_ptr [6] = frase7;
pal_ptr [0] = palavra1;
pal_ptr [1] = palavra2;
pal_ptr [2] = palavra3;
pal_ptr [3] = palavra4;
pal_ptr [4] = palavra5;
pal_ptr [5] = palavra6;
while (1) {
num_frase = escolha_frase();
num_palavra= escolha_palavra();
frase = &frase_ptr[num_frase-1];
palavra = &pal_ptr[num_palavra-1];
for (int i = 0; i < num_frase-1; i++)
{
frase_actual[i] = **frase[i];
}
for (int i = 0; i < num_palavra-1; i++)
{
palavra_actual[i] = **palavra[i];
}
ver_se_contem (frase_actual, palavra_actual);
}
}