• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

kanixe

Ajuda programa - ler ficheiro e colocar os caracteres do lado oposto:

12 mensagens neste tópico

"Escreva um programa que le um ficheiro de texto e o reescreve noutro

ficheiro de tal modo que os caracteres de cada linha se encontram escritos do

fim para o princ´ıpio, isto ´e, em cada linha, o ´ultimo caracter ´e o primeiro, o

pen´ultimo ´e o segundo, etc.. "

Alguem me pode ajudar neste exercicio, não estou a ver bem cm fazer

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Simplesmente tens que ler linha a linha um ficheiro, e para cada fazes um ciclo for a andar do total para 0 e a escrever no outro ficheiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É como o anolsi disse, lês linha a linha do ficheiro para uma string, inverte-la e de seguida escreve-la para o ficheiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Cuidado com as linhas vazias!

Não queres que o teu programa crashe :(

Cuidado com os fins de linha!

Se leres "linha 1\n" não queres imprimir "\n1 ahnil", mas sim "1 ahnil\n".

Para pontos extra:

Cuidado com linhas imensamente longas (tipo 5 milhões de caracteres).

Edit: mais cuidados

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

   /*ler e escrever*/
   
   while ( fgets(v,300,f1) )
     {
      i = strlen(v);
      i=i-1; /*para nao contar com o caracter mudança de linha*/
      
      for(a=i; a>=1; a=a-1;)
      {
       
       
       
       }   
         
         
         
   
     }

   /*Fim*/

nao sei cm sair daki lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

/*ler e escrever*/
   while ( fgets(v,300,f1) )
     {
      i = strlen(v);
      i=i-1; /*para nao contar com o caracter mudança de linha*/

      for(a=i; a>=1; a=a-1;)
      {
        /* ********************************************************* */
        /* CUIDADO! Os indices dos arrays, em C, começam em 0 (zero) */
        /* ********************************************************* */
      }   
     }
   /*Fim*/

O teu programa está quase (tens um ponto e virgula a mais no for()).

O while() termina quando o fegts() não conseguir ler uma linha de `f1`; o ciclo for() varia (mais ou menos) do fim da string até ao princípio ...

O que queres fazer dentro do ciclo for()?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ha yah. ja nem me lembrava. mas agora cm faço pa trocar? cm escrevo o texto? eu sei k tenho k colocar os caracteres de tras pa frente, mas cm ponho isso em codigo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ha yah. ja nem me lembrava. mas agora cm faço pa trocar? cm escrevo o texto? eu sei k tenho k colocar os caracteres de tras pa frente, mas cm ponho isso em codigo?

Não queres que te façamos o código todo pois não?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sei la dava jeito lol.mas imaginem k tenho uma string v[7] , kero por o caracter 3, posso fazer:

putchar (v[2]) ? ou kualker coisa parecida, é isso k preciso de saber, cm transformo um caracter de uma string num inteiro pa usar no putchar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, putchar(v[2]) é perfeito!

A diferença entre `int` e `char`, no C, é mínima.

Experimenta isto:

#include <stdio.h>
int main(void) {
    printf("size dum int : %d\n", (int)sizeof 42);
    printf("size dum char: %d\n", (int)sizeof 'A');
    return 0;
}

Aliás, quase sempre que tens que trabalhar com `char`s isolados (não com um array de `char`s), deves trabalhar com `int`s; o próprio C converte o `char` em `int` (e vice-versa) automagicamente.

É claro que nas excepções, quando um `char` tem mesmo que ser um `char`, tens que ter cuidado e não trocar as coisas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora