Venacava Postado Abril 2, 2017 Denunciar Share Postado Abril 2, 2017 Olá \o/ Estou com um probleminha... Gostaria de entender um exercicio passado em sala, bom ele é bem simples, esta assim: Elabore um programa em C que leia uma string e uma substring ( ok isso feito ) A substring deve encontrar em qual parte a string esta (Ok feito, usei strstr ) Ex:string ="matematica"; Substring=mati; saida:matica. E deve mostrar em qual posicao achou a string (não consigo fazer isso) Ex:Posicao 5; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Nefisto Postado Abril 3, 2017 Denunciar Share Postado Abril 3, 2017 #include <stdio.h> #include <string.h> // int MySubPos(char nome[], char sub[]) // { // register int i, a, b; // for(i = 0; nome[i]; i++) // if(nome[i] == sub[0]) // { // for(a = i, b = 0; sub[b]; a++, b++) // if(nome[a] != sub[b]) // break; // if( !sub[b] ) // return i; // } // return -1; // } int MySubPos(char nome[], char sub[]) { register int i; for(i = 0; nome[i]; i++) if( !(strcmp(&nome[i], sub)) ) return i; return -1; } int main() { char word[100], sub[100]; scanf("%s %s", word, sub); int res = MySubPos(word, sub); res != -1 ? printf("Pos %d\n", res) : printf("A sub nao foi encontrada\n"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Venacava Postado Abril 3, 2017 Autor Denunciar Share Postado Abril 3, 2017 Nefisto vlw pela resposta... A primeira função já faz o que eu preciso, a segunda não deu certo aqui (uso dev) Eu acabei fazendo uma função que faz isso, o resultado sai certo, porém não sei se esta certo dessa forma. 58 minutos atrás, Nefisto disse: // register int i, a, b; Nunca tinha visto isso, vou olhar agora no google (quanta coisa p/ estudar O.o) ficou assim meu exercício . //Blibliotecas #include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> int main () { //funcao char pegapalavra(char*a); char pegapalavra2(char*b); int pegatamanho(char a[]); void verificaposicao(char a[],char b[],int x); //variaveis int tam1; char palavra[20]; char subpalavra[10]; //main pegapalavra(palavra); pegapalavra2(subpalavra); tam1=pegatamanho(palavra); verificaposicao(palavra,subpalavra,tam1); } char pegapalavra(char*a) { printf("Digite uma palavra\n"); gets(a); } char pegapalavra2(char*b) { printf("Digite subpalavra\n"); gets(b); } int pegatamanho(char a[]) { int qtdpalavra; qtdpalavra=strlen(a); return qtdpalavra; } void verificaposicao(char a[],char b[],int x) { char *saida; int con1,j; saida = strstr(a,b); printf("Palavra %s\n",saida); j=pegatamanho(saida); con1=(x-j)+1; printf("posicao %d\n",con1); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Venacava
Olá \o/
Estou com um probleminha...
Gostaria de entender um exercicio passado em sala, bom ele é bem simples, esta assim:
Elabore um programa em C que leia uma string e uma substring ( ok isso feito )
A substring deve encontrar em qual parte a string esta (Ok feito, usei strstr )
Ex:string ="matematica";
Substring=mati;
saida:matica.
E deve mostrar em qual posicao achou a string (não consigo fazer isso)
Ex:Posicao 5;
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.