Pesquisar na Comunidade
Mostrando resultados para as tags ''tad string substring''.
Encontrado 1 registro
-
Bom dia a todos !! Estou com uma dúvida e não estou conseguindo chegar no resultado. Preciso Implementar uma função crop, para a TAD String. Essa função deve ter a seguinte assinatura: String *crop(String s1, int ini, int fim) Ela deve receber uma String existente (testar se existe), e dois índices que demarcarão um trecho a ser 'cortado'. A função deve retornar uma nova String com o conteúdo da string s1 (parâmetro), mas sem o trecho cortado. Exemplo: se o conteúdo de s1 for: "String apenas de teste", e chamarmos a função crop como indicado abaixo String *s2 = crop(s1, 6, 12) Como resultado, uma nova string deve ser criada e retornada, e nesse caso, s2 deveria ter o conteúdo: "String de teste" A parte " apenas" (demarcada pelos índices 6 e 12, inclusive) deve ser removida da string resultante. Eu fiz esse código, mas ele apenas pega o indice inicial que eu escolhi e o final e mantem entre eles, exemplo: palavra "SAPO" eu escolho o indice 2 e o 4 ele retorna "APO" // Substring INI e FIM String *substring(String *s1, int ini, int fim) { String *s3 =(String *)malloc(sizeof(String)); int total_blocos = ((fim - ini)/TAM_BLOCO) + 1; s3->str = (char *)malloc(total_blocos*TAM_BLOCO*sizeof(char)); int i; for (i=0; i<fim-ini; i++) { s3->str[i] = s1->str[ini+i]; } s3->str[i] = '\0'; s3->tam = fim - ini; s3->num_blocos = total_blocos; return s3; } int ini=0; int fim=0; int num=0; puts("\t\nREALIZANDO A SUBSTRING ->"); while (num==0) { printf("\nQual caracter você deseja escolher para ser o inicial? "); scanf("%i", &ini); if (ini == 0) ini = 1; printf("\nQual caracter você deseja escolher para ser o final? "); scanf("%i", &fim); if (fim>ini && ini<str1->tam && fim<str1->tam+1) num=1; } String *s3= substring(str1, ini-1, fim-1); printf("\n"); printf("String: [%s] em s3\n", s3->str); printf("String tamanho: [%i] Caracteres no s3\n", s3->tam); printf("String numero de blocos: [%i] Blocos de %i espacos usados no s3\n\n", s3->num_blocos, TAM_BLOCO); Obrigada desde já!