tuga Postado Dezembro 18, 2008 Denunciar Share Postado Dezembro 18, 2008 boas estou a tentar fazer uma copia de um uma imagem .gif através da leitura e escrita binaria mas não está a funcionaro que eu tentei fazer foi:#include <stdio.h> /* Standard input/output definitions */ #include <string.h> /* String function definitions */ #include <unistd.h> /* UNIX standard function definitions */ #include <fcntl.h> /* File control definitions */ #include <errno.h> /* Error number definitions */ #include <termios.h> /* POSIX terminal control definitions */ #include<stdlib.h> typedef struct dados{ char *dado; struct dados *next; }tdados, *Aptdados; Aptdados dados; void inserirdado(char dado[20]) { Aptdados info; info = (Aptdados)malloc(sizeof(tdados)); strcpy(info->dado, dado); if(dados == NULL) { info->next = NULL; dados = info; } else { info->next = dados; dados = info; } } int le() { FILE *fp; char dado[20]; int n; fp = fopen("lecom.gif","r"); while(n > 19) { n = fread(dado, 1, 20, fp); inserirdado(dado); } printf("\n Leitura completa."); fclose(fp); getchar(); return 1; } int escreve() { Aptdados m; m = dados; FILE *fd; fd = fopen("cop.gif","w"); while(m != NULL) { fwrite(m->dado, 1, 20, fd); m = m->next; } printf("\n Cópia completa\n"); fclose(fd); return 1; } int main() { le(); getchar(); escreve(); return 1; }Este código assim está a dar falha de segmentaçãoSe alguém puder ajudar agradeciaCumps Thga Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Dezembro 19, 2008 Denunciar Share Postado Dezembro 19, 2008 Aptdados->dado só tem uma posição.Tente alocar assim:info = (Aptdados)malloc(sizeof(tdados)); info->dados = (char*) malloc(20);Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Dezembro 19, 2008 Denunciar Share Postado Dezembro 19, 2008 você não tem q abrir com "rb" e "wb" em vez de "r" e "w"??tipo assim:fd = fopen("cop.gif","wb"); em vez de: fd = fopen("cop.gif","w");porque com o b no final abre como binario. já fiz certa vez um programa q fazia isso tb, mas ele dava erro seu eu não colocava o b. eu reparei q quando tinha o caracter 10 ou o 13 ele gravava o 13 seguido do 10 sempre pra fazer a quebra de linha. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Dezembro 20, 2008 Denunciar Share Postado Dezembro 20, 2008 Isto no Windows. No Unix/Linux não há distinção entre arquivos textos e arquivos binários.Logo abrir com "w" ou "wb" tanto faz. Já no Windows fazer isto é obrigatório.Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tuga Postado Janeiro 6, 2009 Autor Denunciar Share Postado Janeiro 6, 2009 (editado) nenhuma destas opções funcionou...se alguém tiver ideias post e já agora é linux Editado Janeiro 6, 2009 por tuga Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
tuga
boas estou a tentar fazer uma copia de um uma imagem .gif através da leitura e escrita binaria mas não está a funcionar
o que eu tentei fazer foi:
Este código assim está a dar falha de segmentação
Se alguém puder ajudar agradecia
Cumps Thga
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.