Ir para conteúdo
Fórum Script Brasil

Bruno Kim

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Tudo que Bruno Kim postou

  1. 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.
  2. Desculpem dar up... acho que eu me alonguei no texto, mas não é complicado o/ Obrigado de novo
  3. 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...
×
×
  • Criar Novo...