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...