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