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...
Pergunta
Bruno Kim
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...
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 como sendo*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
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.