Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 11336

Não consigo encontrar bug em código C

$
0
0
Você tem razão nesse questionamento, mas tal complicação já estava prevista quando fiz o programinha, ficando, por assim dizer, a cargo do usuário sanar eventuais dificuldades quejandas. Por ex., para alterar a segunda substring "AA" na string por você dada, o usuário deveria pesquisar por " 123 AA" e substituir isso por " 123 CCC". Claro que casos como substituir o terceiro '1' de "111" por '0', isto é, "111" para "110", a pesquisa acaba tendo de usar a string inicial inteira. Seja como for, segue um código que penso resolva isso a contento. Caso tenha alternativa melhor, por favor, aponte-a. Abraços. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> main() { char TextInic[1000], TextFin[1000], SubTextExcl[1000], SubTextIncl[1000]; char* pt; int i, j, ocor, count; while(1) { printf("\n\n Digite o texto ou 0 para sair: "); gets(TextInic); fflush(stdin); if(strcmp(TextInic, "0") == 0) break; printf("\n Digite o subtexto a ser excluido: "); gets(SubTextExcl); fflush(stdin); printf("\n Digite qual repeticao do subtexto a excluir (1, 2, ...): "); scanf("%d", &ocor); fflush(stdin); count = 1; pt = strstr(TextInic, SubTextExcl); while((++count <= ocor)&&(pt != NULL)) pt = strstr(pt + strlen(SubTextExcl), SubTextExcl); if(pt) { printf("\n Digite o subtexto a ser incluido: "); gets(SubTextIncl); fflush(stdin); i = 0; while(&TextInic[i] != pt) { TextFin[i] = TextInic[i]; i++; } j = 0; while(SubTextIncl[j]) TextFin[i++] = SubTextIncl[j++]; for(j = strlen(TextInic) + strlen(SubTextExcl) - strlen(pt); j <= strlen(TextInic); i++, j++) TextFin[i] = TextInic[j]; printf("\n\n O texto ficou assim: %s", TextFin); } else printf("\n O subtexto a ser excluido nao esta contido no texto.\n"); } printf("\n\nFIM DO PROGRAMA"); }

Viewing all articles
Browse latest Browse all 11336

Trending Articles