3
I’m trying to make a program in C to find a word in a string vector, returning the position of the word and when not finding returning -1. I’m having trouble with substring, type my program identifies bits of words, how to fix it?
#include <stdio.h>
#include <string.h>
int match(char [], char []);
int main() {
  char a[100], b[100];
  int posicao;
  printf("entre um texto\n");
  gets(a);
  printf("entre a palavra que quer procurar\n");
  gets(b);
  posicao = match(a, b);
  if(posicao != -1) {
    printf("%d\n", posicao );
  }
  else {
    printf("-1\n");
  }
  return 0;
}
int match(char texto[], char padrao[]) {
  int c, d, e, tamanho_texto, tamanho_padrao, posicao = -1;
  tamanho_texto    = strlen(texto);
  tamanho_padrao = strlen(padrao);
  if (tamanho_padrao > tamanho_texto) {
    return -1;
  }
  for (c = 0; c <= tamanho_texto - tamanho_padrao; c++) {
    posicao = e = c;
    for (d = 0; d < tamanho_padrao; d++) {
      if (padrao[d] == texto[e]) {
        e++;
      }
      else {
        break;
      }
    }
    if (d == tamanho_padrao) {
      return posicao;
    }
  }
  return -1;
}
Make sure you don’t have buffer overflow. None of your inputs can be more than 99 characters long.
– pmg