Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas Com Escrita Em Arquivo


Bruno Kim

Pergunta

Olá a todos, mais um estudante de C desesperado se apresentando. Devo dizer q já fui no Google, perguntei a amigos e pesquisei neste fórum antes de abusar da paciência de vocês, mas ainda assim...

Estou programando em Windows, usando o Dev C++. Este programa visa colocar o ponteiro de posição do arquivo (carro) em uma dada posição, e então escrever nesta posição. Aí vai um código simplificado, com umas pseudo-funções. (o compilável está em http://docs.google.com/Doc?id=dcw5h9sc_74htq86r ).

Explanação rápida: o usuário deve inserir três números, que permitirão ao programa localizar uma dada posição dentro de um arquivo formatado (o arquivo encontra-se em http://docs.google.com/Doc?id=dcw5h9sc_75cphsbf ).

O PROBLEMA é que o carro é colocado na posição desejada, usando minha função set_position, mas uma vez ali o fprintf não funciona (neste caso, por teste, tento escrever "kk"). Já testei com fprintf, putc, e nada. Coloquei essas funções de escrita dentro e fora de set_position, e continua não funcionando. Dei fflush no arquivo em cima e embaixo... já tou com esse problema há um mês, e espero q a solução n seja trivial, porque mtos já caíram para ela...

void set_position(FILE *fp, int *data);

int main(){
    FILE *input;
    int data[3];

    abre_arquivo();
    pega_data();
    
    set_position(input, data[0]);
    putc('k', input); putc('k', input);
    fprintf(input, "kk");
    fflush(input);
    rewind(input);
    
    fecha_arquivo(input);
    
    return 0;
    
    }

void set_position(FILE *fp, int *data){
     int i, j, count;
     char ch;

     localiza_posicao(); //Mais detalhes, veja o código e o arquivo nos links acima. Esta parte funciona muito bem, obrigado.
     
     fprintf(fp, "kk"); fflush(fp);
     
     }
ADENDO para os que forem ler o código completo: *No código completo ele faz duas vezes a localização de posição, sempre a partir da origem do arquivo *O arquivo tem as informações de uma treliça. A primeira parte tem as informações dos nós (posição em x, em y, restrição, força em x, em y, massa), e a segunda as das barras (nó terminal 1, nó terminal 2, módulo de Young e área da seção transversal). São 7 nós e 12 barras. *A variável data armazena duas posições, cada uma da forma elemento/índice/característica, onde **elemento: 0: nó, 1: barra **índice: 1~7: para nós, 1~12: para barras **característica: 0: posição em x, 1: posição em y, ... para nós; 0: nó terminal 1, 1: nó terminal 2, ... para barras Como exemplo, inserir '0 2 2 1 2 3' iria primeiro na restrição (2) do segundo (2) nó (0), e depois na área (3) da segunda (2) barra (1); *Quanto aos while esquisitos, eu costumo botar funções e testes aninhados pra economizar espaço =) Considere os
while (putc(getc(fp), stdout) != '#');
como sendo
while(ch != '#'){
   ch = getc(fp);
   putc(ch, stdout); //imprime na tela
}

*Quanto aos switches, note que eles não tem o break, então uma vez indo parar num dado case, ele continua a executar as linhas abaixo.

Espero que isso ajude vocês a me ajudarem =] E faz favor, mandem e-mail, eu preciso pra anteontem esse código funcionando.

Hasta, e sorte a todos, sempre!

Ah, deixei alguns resquícios do código completo. O set_position é chamado com data, e não data[0] neste caso. Também neste código n é necessário dar rewind no arquivo...

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Não funciona =] Eu acredito que a lógica esteja correta, mas... simplesmente o código completo não funciona, não escreve no arquivo a informação desejada. Eu imaginei que poderia ser dependência da máquina, mas um amigo em Campinas tentou rodar e também não funcionou. Se puder compilar o programa, agradeço.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...