Olá a todos,

Antes de mais nada mandei este e-mail na lista dia 30, por algum motivo nào
recebi os e-mails da lista do dia 1 até hoje. Espero que este chegue.

Estou com um problema na minha aplicação e depois de procurar muito na net
ainda não encontrei nada parecido.
Alguns caracteres aparecem na minha consulta e esses caracteres não estào
sendo inseridos.

Vou colocar um exemplo prático eu inserio os dados sobre as disciplinas e
suas turmas:

INSERT INTO DISCIPLINA VALUES('SCE-0105','Estatística I', 4,'Computação');
INSERT INTO DISCIPLINA VALUES('SCE-0119','Introdução à Teoria das
Probabilidades', 4,'Computação');
(...)


INSERT INTO TURMA VALUES('SCE-0105', '1', 20042);
INSERT INTO TURMA VALUES('SCE-0119', '1', 20042);

(...)


Recupero as informções em um programa, escrito em c da seguinte maneira:

if(executaComando(conn,"DECLARE curr CURSOR FOR SELECT t.disc, t.id_turma,
t.semestre, da.area, d.ch FROM TURMA t LEFT JOIN DISC_EM_AREA da ON t.disc=
da.disc JOIN DISCIPLINA d ON t.disc = d.cod ORDER BY t.disc, t.id_turma;",
&result)){

(...)


Os dados estavam vindo com varios caracteres a mais. Tentei resolver o
problema usando a função strncpy informando o tamanho dos meus dados (que
deveriam conter 8 caracteres).

strncpy((*turma)[i].cod, PQgetvalue(result, 0, 0),8);
printf("%s,%s.\n",PQgetvalue(result, 0, 0),(*turma)[i].cod);

(...)


Aparentemente funciona. Em negrito pode-se ver que o espaço entre virgulas é
o lixo que estava guardado no banco de dados. o valor copiado no vetor de
turmas está correto pois tem apenas 8 digitos.

SCE-0105            ,SCE-0105.
SCE-0119            ,SCE-0119.
(...)


Fiquei supreso quando vi o resultado que foi gravado no arquivo de saida:
onde deveria ser gravado...
fprintf(fp,"%s %s %d\n",prof[p].nusp, turma[t].cod, turma[t].turma);

0000401 SCE-0105 1
0000702 SCE-0105 1
0000801 SCE-0105 1
0000902 SCE-0105 1
0000801 SCE-0119 1
0000802 SCE-0119 1
0000801 SCE-0119 2
0000802 SCE-0119 2
0000801 SCE-0119 3

Olhando mais de perto percebi algo mais bizarro o valor deste caracter
fantasma é o valor do outro atributo. (!?!?!)
Alguem á passou por um problema parecido? Acho que estou tendo um problema
com enncoding porem quando criei a base me preocupei para deixar tudo em
latin-1.

Agradeço a atenção de todos e espero consigir ajuda neste forum.



--
Felipe Luis de Souza Vieira
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a