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

problema para usar strcat


bruno_r_santana

Pergunta

Olá a todos,

Estou tentando usar um for para armazenar um determinado número de espaços na variável espacos, por exemplo armazenar 16 espaços nela assim " " mas dá erro quando o programa chega nesse for e fecha. O erro ocorre no for que deixei comentado. Agradeço qualquer ajuda. Segue o trecho do código:

char* concatena(char* texto,int tam){
     int numespacos;
     numespacos = 20 - tam;
     char* espacos = "";
     /*for(int i=0; i<numespacos; i++){
         strcat(espacos, " ");
     }*/
     strcat(texto, espacos);
     return texto;
}

void disponiveisParaEmprestimo(){
     system ("cls");
     cout<<"Nome do livro   |   "<<"Autor   |   "<<"Disponiveis para emprestimo"<<endl;
     for(int i=0; i<nl;i++){
       cout<< concatena(l[i].nome, strlen(l[i].nome))<<l[i].autor<<" "<<l[i].exemplares - l[i].emprestados<<endl;
     }
}

Editado por Jonathan Queiroz
Adicionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Olá a todos,

Estou tentando usar um for para armazenar um determinado número de espaços na variável espacos, por exemplo armazenar 16 espaços nela assim " " mas dá erro quando o programa chega nesse for e fecha. O erro ocorre no for que deixei comentado. Agradeço qualquer ajuda. Segue o trecho do código:

char* concatena(char* texto,int tam){
     int numespacos;
     numespacos = 20 - tam;
     char* espacos = "";
     /*for(int i=0; i<numespacos; i++){
         strcat(espacos, " ");
     }*/
     strcat(texto, espacos);
     return texto;
}

void disponiveisParaEmprestimo(){
     system ("cls");
     cout<<"Nome do livro   |   "<<"Autor   |   "<<"Disponiveis para emprestimo"<<endl;
     for(int i=0; i<nl;i++){
       cout<< concatena(l[i].nome, strlen(l[i].nome))<<l[i].autor<<" "<<l[i].exemplares - l[i].emprestados<<endl;
     }
}

for(int i=0; i<nl;i++)

você declarou o nl?

porque eu não vi nesta parte do codigo o nl sendo declarado.

Link para o comentário
Compartilhar em outros sites

  • 0

você não alocou memoria para o ponteiro... portanto não pode usar a função strcat

para fazer isto é simples,

troque

char* espacos = "";
por
char* espacos = new char[numespacos];
memset(espacos, 0, numespacos); //é necessario "zerar" a memoria que você aloca

não se esqueça de deletar a memoria alocada depois de usa-la

sobre alocação de memoria

http://www.cplusplus.com/doc/tutorial/dynamic/

espero ter ajudado :)

Link para o comentário
Compartilhar em outros sites

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...