Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida String


Scarlaty Costa

Pergunta

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á!
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...