revised Posted December 13, 2015 at 04:55 PM Report Share #590614 Posted December 13, 2015 at 04:55 PM (edited) Boa tarde. Preciso da ajuda na verficação do meu codigo. #include<stdio.h> #include<string.h> int verificaSubstr(char*str,char*substr,int substrMax,int i){ int j,flag=1; for (j=0;j<substrMax;j++){ if (substr[j]!=str[i]){ flag=0; } i++; } return(flag); } char removeSubstr(char*str,int strMax,int substrMax,int i){ for (i=i;str[i]!='\0';i++){ str[i]=str[i+substrMax+1]; } str[i+1]='\0'; return(*str); } void main(){ char str[100],substr[20]; int strMax,substrMax,i,flag; printf("Frase: "); scanf("%[^\n]s",&str); fflush(stdin); strMax=strlen(str); printf("\nRemover: "); scanf("%s",&substr); fflush(stdin); substrMax=strlen(substr); for (i=0;str[i]!='\0';i++){ if(substr[0]==str[i]){ flag=verificaSubstr(str,substr,substrMax,i); if (flag==1){ removeSubstr(str,strMax,substrMax,i); } } } printf("%s\n\n",str); system("pause"); } caso 1 Se eu escrever: Input frase: Ricardo Miguel Mendes Pereira Input remover: Miguel Output: Ricardo Mendes Pereira caso 2 Se eu escrever: Input frase: Ricardo Miguel Miguel Mendes Pereira Input remover: Miguel Output: Ricardo Miguel Mendes Pereira caso 3 Se eu escrever: Input frase: Ricardo Miguel Miguel Miguel Miguel Miguel Mendes Pereira Input remover: Miguel Output: Ricardo Miguel Miguel Mendes Pereira Ou seja no caso 1 tudo perfeito... No caso 2 so apaga uma vez o "Miguel". No caso 3 ele apaga 3x o miguel mas não apaga as 2 ultimas... Ja dei aqui umas valentes voltas ao codigo e não consigo avançar no sentido de corrigir o codigo de maneira a ele apagar todas as ocorrencias... Agradeço desde ja a ajuda que possam dar. Edited December 13, 2015 at 08:33 PM by thoga31 GeSHi Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 13, 2015 at 06:02 PM Report Share #590617 Posted December 13, 2015 at 06:02 PM se eu disser que no terceiro caso os "Miguel"'s que são removidos são os: Ricardo Miguel Miguel Miguel Miguel Miguel Mendes Pereira achas que consegues saber qual o problema ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
revised Posted December 13, 2015 at 07:41 PM Author Report Share #590622 Posted December 13, 2015 at 07:41 PM não estou a ver porquê... supostamente quando envio o valor de "i" para a função eu so retorno a string e a flag... o ~valor de "i" deveria ser exatamente igual e ele deveria continuar a na mesma posição do "for" que está fora das funções... não podes dar uma dica? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 13, 2015 at 11:59 PM Report Share #590628 Posted December 13, 2015 at 11:59 PM supostamente quando envio o valor de "i" para a função eu so retorno a string e a flag... o ~valor de "i" deveria ser exatamente igual e ele deveria continuar a na mesma posição do "for" que está fora das funções... e fica, e o problema é exactamente esse ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
revised Posted December 14, 2015 at 12:31 AM Author Report Share #590629 Posted December 14, 2015 at 12:31 AM (edited) LOL. i-- e ficou resolvido. Achas que o codigo ta fixo ou podia ser melhorado? Muito Obrigado. HappyHippyHippo Edited December 14, 2015 at 12:32 AM by revised Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 14, 2015 at 04:34 AM Report Share #590632 Posted December 14, 2015 at 04:34 AM Achas que o codigo ta fixo ou podia ser melhorado? #include <stdio.h> #include <string.h> #define MAX 100 void main() { char str[MAX] = {9}, substr[MAX] = {9}, *ptr = NULL; size_t str_length = 0, substr_length = 0; printf("Frase: "); scanf("%100[^\n]\n", &str); str_length = strlen(str); printf("\nRemover: "); scanf("%100[^\n]\n", &substr); substr_length = strlen(substr); while ((ptr = strstr(str, substr)) != NULL) { memmove(ptr, ptr + substr_length + 1, str_length - (ptr - str)); } printf("\nfinal : %s\n", str); system("pause"); } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
revised Posted December 14, 2015 at 01:47 PM Author Report Share #590643 Posted December 14, 2015 at 01:47 PM Pois... o codigo está bem mais pequeno... e faz o mesmo lol... O problema é que ainda não sei metade das instruções que utilizas-te. Isso provavelmente é um nivel bem mais alto que o que tenho neste momento... Mas devo la chegar com o tempo... Entretanto vou tambem tentado compreender o memmove e afins para ver se evolu-o mais um bocado. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now