• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

steller

string

12 mensagens neste tópico

como posso juntar duas strings? tenho a string de origem e a que quero juntar, mas com o strcat nao estou a conseguir. compila sem problemas mas depois dá erro a correr. aqui fica o codigo.

void tira_codigos(AH *raiz, char *cod, tabela *t){
     char *exp=cod;
     char *zero="0";
     char *um = "1";
     if(!(raiz->esq==NULL&&raiz->dir==NULL)){
         printf("a"); 
         tira_codigos(raiz->esq, strcat(exp, zero), t);
         printf("b");
         tira_codigos(raiz->dir, strcat(exp, um), t);
     }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A string de destino tem espaço suficiente para as duas que queres juntar? ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado, serviu  :P

agora estou com outro problema... tenho que compara um char com uma lista de char que estao numa tabela para depois tirar o respectivo codigo. isto é arvore de hufman... eu de string, char é coisa que nao entendo muito, o meu código está aqui:

//struct
struct eTabela{char *c; char *cod;};
struct tabela{eTabela *tab[256];};

//codigo para tira valores
     while((letra=fgetc(fin))!=EOF){
        for(i=0;;i++)
            if(stricmp(&tab_cod->tab[i]->c, &letra)){
                bits = (int) tab_cod->tab[i]->cod;
                fputc(bits, fout);
                break;
            }
     }
     
     fclose(fin);
     fclose(fout);
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como e que tu tas a estudar arvores com duvidas a comparar chars.. :$

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a comprar chars com a função stricmp. Isso não faz sentido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nao percebi, entao se forem iguais devolve 0.

A função stricmp serve para comparar strings (arrays de char terminados com o caracter '\0'), não serve para comparar dois chars.

Isto é correcto:

char string1[2] = "a";
char string2[2] = "b";

if(stricmp(string1, string2) == 0)
{
// As strings são iguais
}

Isto já não é:

char c1 = 'a';
char c2 = 'b';

if(stricmp(&c1, &c2) == 0) // Isto não se deve fazer, a função stricmp está à espera de uma string terminada em '\0'
{
// ...
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma nota:

senão me engano a função stricmp não é standard e só funciona em windows. Tenham isso em atenção se quiserem fazer código que funcione noutra plataforma que não o windows.

para comparares char's podes usar os operadores normais ( < , > , == , != , etc)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

strcmp ou cmpstr nao sei ao certo funciona em linux e windows

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

_stricmp faz parte do ISO C++. Pelo menos é o que diz no Visual Studio 2005.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora