Ir ao conteúdo
  • Cadastre-se

C Programa abortando depois de passar pela funcao


meanmatheus

Posts recomendados

Eu fiz uma função em C que substitui os acentos que determinada palavra passada pelo parâmetro tem. O código funciona e substitui os caracteres com acento, mas o programa em si é abortado quando executa. Quem puder me ajudar com melhorias ou sugestões eu agradeço. Segue o código:

void retiraAcentos(char str[]) {
    char *pch;
    pch = strstr(str,"Á");
    if (pch != NULL)
        strncpy(pch,"A",6);
    pch = strstr(str,"À");
    if (pch != NULL)
        strncpy(pch,"A",6);
    pch = strstr(str,"Â");
    if (pch != NULL)
        strncpy(pch,"A",6);
    pch = strstr(str,"Ã");
    if (pch != NULL)
        strncpy(pch,"A",6);
    pch = strstr(str,"Ä");
    if (pch != NULL)
        strncpy(pch,"A",6);
    pch = strstr(str,"É");
    if (pch != NULL)
        strncpy(pch,"E",6);
    pch = strstr(str,"È");
    if (pch != NULL)
        strncpy(pch,"E",6);
    pch = strstr(str,"Ê");
    if (pch != NULL)
        strncpy(pch,"E",6);
    pch = strstr(str,"Ë");
    if (pch != NULL)
        strncpy(pch,"E",6);
    pch = strstr(str,"Í");
    if (pch != NULL)
        strncpy(pch,"I",6);
    pch = strstr(str,"Ì");
    if (pch != NULL)
        strncpy(pch,"I",6);
    pch = strstr(str,"Î");
    if (pch != NULL)
        strncpy(pch,"I",6);
    pch = strstr(str,"Ï");
    if (pch != NULL)
        strncpy(pch,"I",6);
    pch = strstr(str,"Ó");
    if (pch != NULL)
        strncpy(pch,"O",6);
    pch = strstr(str,"Ò");
    if (pch != NULL)
        strncpy(pch,"O",6);
    pch = strstr(str,"Ô");
    if (pch != NULL)
        strncpy(pch,"O",6);
    pch = strstr(str,"Õ");
    if (pch != NULL)
        strncpy(pch,"O",6);
    pch = strstr(str,"Ö");
    if (pch != NULL)
        strncpy(pch,"O",6);
    pch = strstr(str,"Ú");
    if (pch != NULL)
        strncpy(pch,"U",6);
    pch = strstr(str,"Ù");
    if (pch != NULL)
        strncpy(pch,"U",6);
    pch = strstr(str,"Û");
    if (pch != NULL)
        strncpy(pch,"U",6);
    pch = strstr(str,"Ü");
    if (pch != NULL)
        strncpy(pch,"U",6);
    pch = strstr(str,"Ç");
    if (pch != NULL)
        strncpy(pch,"C",6);
}

 

Link para o comentário
Compartilhar em outros sites

20 minutos atrás, meanmatheus disse:

O código funciona e substitui os caracteres com acento, mas o programa em si é abortado quando executa.

 

Como podem as duas coisas serem verdade? 

 

21 minutos atrás, meanmatheus disse:

Quem puder me ajudar com melhorias ou sugestões eu agradeço

 

Minha sugestão: se está certo de que a entrada é de caracteres de um byte só use uma tabela simplesmente. Não há razão para testar e ao testar deve levar umas dezenas de vezes mais tempo. Vai sempre trocar as mesmas coisas. Use o simples: uma tabela de referência com 256 posições.

 

 

poste um programa completo...

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...