Ir para conteúdo
Fórum Script Brasil

viniciusams

Membros
  • Total de itens

    15
  • Registro em

  • Última visita

Tudo que viniciusams postou

  1. Amigo, não é exatamente isso não, obrigado pela tentativa o meu problema é que o membro é uma uniao de varias outras estruturas, então, pode ser teste->membro.teste1 ou teste->membro.teste2 ou teste->membro.teste3 Essas estruturas teste1, teste2 e teste3 eu só sei em tempo de execução, então para eu fazer isso só fazendo um switch, pois eu recebo um id, ou então eu utilizo a ideia da minha pergunta, que é utilizar um ponteiro para preencher a estrutura
  2. Pessoal, estou querendo percorrer uma struct e setar valores nela utilizando um ponteiro, é possível? Como? Eu preciso dessa forma porque um campo da struct é uma union e assim podem ser diferentes tipos de estrutura no mesmo campo, então como não sei qual eu vou receber e para evitar um switch imenso estou pensando em fazer dessa forma. Assim vou utilizar offsetof para ajudar tambem. alguém sabe como fazer isso? Valeu
  3. E ai pessoal, estou usando o metodo SHA1(..) que se encontra nas lib do OpenSSL. O método está declarado da seguinte forma nos documentos: unsigned char *SHA1(const unsigned char *d, unsigned long n, unsigned char *md); "SHA1() computes the SHA-1 message digest of the n bytes at d and places it in md (which must have space for SHA_DIGEST_LENGTH == 20 bytes of output). If md is NULL, the digest is placed in a static array." Até ai tudo bem, o problema que não estou conseguindo operar com as diferenças de unsigned e signed char. Detalhe que quero atribuir o valor criptografado em um campo signed char. Estou fazendo da seguinte forma: unsigned char sha1sum[SHA_DIGEST_LENGTH]; test_t teste; //esta estrutura possui um signed char SHA1((unsigned char *)teste->name, strlen(teste->name), sha1sum); signed char textoCifrado[SHA_DIGEST_LENGTH]; for (i = 0; i < SHA_DIGEST_LENGTH; i++) { char val[20]; sprintf(val, "%02x ", sha1sum[i] ); strcat(textoCifrado, val); } printf("%s", textoCifrado); Saída: a!comdd 01 90 39 21 ea 24 94 20 32 30 20 e depois dá erro e exibe memoy map e outras coisas mais. Alguém sabe o que pode ser o meu erro?? Obrigado desde já Pessoal, já resolvi a implementação está correta. A questão que falto eu iniciar meu signed char textoCifrado[sHA_DIGEST_LENGTH] = ""; Ai quando fiz isso deu certo... de qualquer forma fica o post se alguém tiver dúvidas como utilizar o SHA1... Pessoal, já resolvi a implementação está correta. A questão que falto eu iniciar meu signed char textoCifrado[sHA_DIGEST_LENGTH] = ""; Ai quando fiz isso deu certo... de qualquer forma fica o post se alguém tiver dúvidas como utilizar o SHA1...
  4. Estou programando em C Vou analisar a melhor solução para mim. Obrigadão ae pelas dicas e ajudas! []'s
  5. Entendi sim maligno! agora, você teria uma sugestão de desalocar memoria no proprio metodo? porque é uma API e não queria passar esse trabalho para o meu cliente, então queria desalocar os PTR no proprio metodo. Mas todas as tentativas minhas foram em vão. Dessa forma, o cliente desalocaria apenas a lista...
  6. Entendi, então um simples free(testeList) não libera tudo. Deve liberar primeiro os PTR da coluna e depois o testeList? Como faz isso? Cara é sim uma matriz pra ponteiro, eu sou iniciante em C e foi uma solução que eu encontrei para eu passar para o cliente do meu método uma matriz preenchida com valores...
  7. E ae pessoal, espero que me ajudem nessa dúvida. Tenho o seguinte método sintetizado: S16 teste(teste_t **testeList){ S8 *PTR; teste_t *lista; ... //aloca memoria para a lista lista = (teste_t *) calloc (lines * columns, sizeof (teste_t )); // verify all lines for (i = 0; i < lines; i++) { // verify all columns in this line for (j = 0; j < columns; j++) { ... PTR = (S8 *) malloc (sizeof(S8[20])); getValue(j, PTR); lista[i].number.present = TRUE; lista[i].number.value = PTR; } } } *testeList = lista; return SUCCESS; } A minha dúvida é: Quando o cliente do meu método liberar memoria do testeList ( free(testeList) ), irá automaticamente liberar também de lista? e dos PTR gravados em cada campo de lista? Se alguém não entendeu me fala que eu explico de novo. Valeu desde já
  8. Galera, meu problema é o seguinte tenho a seguinte estrutura: typedef struct { int id; char *name } teste_t; Tenho uma função que recebe um ponteiro para o vetor dessa estrutura. Tenho que preencher o vetor. A função origem deve receber os valores corretos. int select(teste_t **testeList){ char *valPTR; //aloca memoria para as linhas *testeList= (teste_t *) calloc(lines, sizeof (teste_t *)); //aloca memoria para as colunas for (i = 0; i < columns; i++) { testeList[i] = (teste_t *) calloc (columns, sizeof (teste_t)); } ... for (...) { getValue(ptr, j, &c); testeList[i]->id = c; valPTR = (char *) malloc (sizeof(char[30])); getValueString(ptr, j, valPTR); testeList[i]->name = valPTR; } Bom, o que acontece é que no final dessa função eu sou printf e vejo que os dados do vetor estão coincidindo com o esperado, mas quando eu retorno na função main, que eu chamo o select, o vetor apresenta apenas a primeira posição com o valor correto, a segunda posição por exemplo não tem nada. Qualquer dúvida me falem. Desde já agradeço
  9. Aloquei memória considerando ser matriz //aloca memoria para as linhas *testeList = (teste_t *) calloc(lines, sizeof (teste_t *)); //aloca memoria para as colunas for (i = 0; i < lines; i++) { testeList [i] = (teste_t *) calloc (columns, sizeof (teste_t)); } Jonathan, é isso mesmo??
  10. Galera gostaria de saber o motivo do erro e como conserta-lo. Tenho um vetor de uma estrutura e aloco memória dinamicamente para ela. Quando vou setar um valor na posição 0 é ok. quando vou setar na posição 1 dá erro. exemplo de código: void select(teste_t **testeList){ ... *testeList= (teste_t *) malloc(n * sizeof (teste_t)); // n = número de linhas printf("VOU PREENCHER\n"); testeList[0]->id.value = 1; printf("DEU CERTO\n"); testeList[1]->id.value = 2; // Dá errado!! Execução: DEU CERTO Falha de segmentação Desde já agradeço
  11. cara antes de tudo obrigado pela resposta mas alterei conforme você me falou e não tenho a resposta esperada. code[0]= 0 name[0]= oþ·X©þ· code[1]= 2052 name[1]= p8HP¿ code[2]= 2052 name[2]= (0¿ code[3]= 2052 name[3]= h¿ no final da função select eu mandei imprimir o vetor e este está com os valores corretos
  12. Galera, sou completamente iniciante em c implementei um código e este não funciona. Declaro um ponteiro que será um vetor, não seto o tamanho. Passo ele como parametro para outra função. Nesta outra função eu aloco espaço e seto os valores neste vetor. O método origem exibe os valores do vetor. Poderiam me ajudar a apontar o erro? int main(int argc, char** argv) { U16 id, i; conexaoinfo_t info; teste_t teste, *testeFinalList; ... select(idconn, &teste, testeFinalList) for (i = 0; i < sizeof (testeFinalList); i++) { printf("code[%d]= %d\n", i, testeFinalList[i].cod); printf("name[%d]= %s\n", i, testeFinalList[i].nome); } } select(U16 id, teste_t *teste, teste_t *testeFinalList){ testeFinalList= (teste_t *) malloc(lines * sizeof (teste_t)); for (i =0 ...){ testeFinalList[i].code = c; strcpy(testeFinalList[i].name, name); } } Bom, cortei o código justamente para ficar mais fácil de entender o problema. Não consigo passar o parâmetro carrierFinalList e obter o resultado esperado. Desde já agradeço
  13. Pessoal, estou planejando realizar o seguinte trabalho: desenvolver um aplicativo para celular em JME desenvolver um web service que rodará em meu pc conectar ambos via bluetooth e realizar trocas de msgs e objetos. Estou lendo muitas coisas interessantes, aprendendo, porém está faltando aquele Hello World básico que ajuda a entender. Alguém ai conhece o assunto e tem links interessantes, dicas, ou cod fonte mesmo? Valeu!!
×
×
  • Criar Novo...