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

Unix To Dos


badjceo

Pergunta

Tenho que fazer um programa que converte arquivos texto de DOS para o formato UNIX..

Arquivos texto do DOS o '\n' é representado por CR\LF,isto é, 0x0D seguido por 0x0A, enquanto que no UNIX, basta o caracter LF (0x0A).

Mas como eu vou fazer um arquivo texto no DOS?

Como vou ler o CR\LF no arquivo?

Eu vou ter de escrever CR\LF quando criar o arquivo? Ex: Este é um arquivoCR\LF...

valeu

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

O seu programa vai ser compilado e executado no DOS, certo? Então, basta você passar o meta-caracter de nova linha ('\n') como você faria normalmente. Ele vai ser automaticamente transformado em CR + LF ao ser gravado no arquivo. Aliás, no DOS, se você mandar gravar somente o LF também acontece a mesma coisa (já que a nova linha é representada pelos dois caracteres):

#include <stdio.h>
#include <stdlib.h>

void main()
{
    FILE *h;
    char *arq = "c:\\teste.txt";
    char CR = 13;
    char LF = 10;
    
    h = fopen(arq, "w");
    fprintf(h, "teste\n");
    fprintf(h, "outro teste");
    fprintf(h, "%c", LF);
    
    fclose(h);
}

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu mesmo pela ajuda!!

Consegui resolver esse problema!!

Mas depois que eu fizer essa conversão de unix para DOS eu tenho de mudar a extensão do arquivo, ele tem de passar de ".unx" para ".dos". como eu faço isso??

lembrando que meu programa vai ser chamado pela linha de comando (int arg c,char *argv[]).

Logo eu não sei com que arquivo o usuário vai entrar, se eu soubesse era só utilizar rename() certo??

Valeu

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu mesmo pela ajuda!!

Consegui resolver esse problema!!

:)

Mas depois que eu fizer essa conversão de unix para DOS eu tenho de mudar a extensão do arquivo, ele tem de passar de ".unx" para ".dos". como eu faço isso??

É só trocar os últimos três caracteres do nome do arquivo, não? Ou, também pode ser os três próximos caracteres a partir do "." (o que dá no mesmo, se só existir uma extensão).

lembrando que meu programa vai ser chamado pela linha de comando (int arg c,char *argv[]).

Logo eu não sei com que arquivo o usuário vai entrar, se eu soubesse era só utilizar rename() certo??

Claro que sabe, oras. Como você faz para abrir o arquivo??? Se você abre o arquivo é porque pegou o nome dele de argv[]. Se você pegou o nome do arquivo para abrí-lo você também pode pegar para renomeá-lo, não? E sim, é com rename() mesmo.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

valeu pelo toque, nessa parte do programa unix to dos já está tudo quase resolvido!!!

Mas o meu programae tambem criptografa arquivos, por exemplo:

como eu falei meu programa(Form.c) é chamado pela linha de comando e se ele for chamado assim:(form teste.unx d) ele pega o arquivo teste e converte para formato dos e grava como teste.dos.

mas se le for chamado assim: (form teste.dat c chave) ele criptografa o arquivo teste de acordo com a chave e grava como teste.crp, se esse teste.crp for descriptografado ele tera de se chamar de novo teste.dat. mas tem um problema na hora de renomear eu não vou saber qual extensão colocar pois nem sempre o arquivo vai ser .dat.

Eu soube que para fazer isso tem que fazer o seguinte: na hora que o teste.dat for criptografado sera gerado um arquivo teste.crp sendo que os quatro primeiros bytes desse arquivo serã: 'd','a','t','\0'. então quando ele for descriptografado sera gerado um arquivo teste.dat.

as primeiras 4 letras de teste.crp terão de ser dat\0 é isso que eu tenho de fazer??

abraço graymalkin, você está sendo uma grande ajuda!!O que nã e facil de encontrar em alguns foruns

Link para o comentário
Compartilhar em outros sites

  • 0

valeu pelo toque, nessa parte do programa unix to dos já está tudo quase resolvido!!!

Mas o meu programae tambem criptografa arquivos, por exemplo:

como eu falei meu programa(Form.c) é chamado pela linha de comando e se ele for chamado assim:(form teste.unx d) ele pega o arquivo teste e converte para formato dos e grava como teste.dos.

mas se le for chamado assim: (form teste.dat c chave) ele criptografa o arquivo teste de acordo com a chave e grava como teste.crp, se esse teste.crp for descriptografado ele tera de se chamar de novo teste.dat. mas tem um problema na hora de renomear eu não vou saber qual extensão colocar pois nem sempre o arquivo vai ser .dat.

Eu soube que para fazer isso tem que fazer o seguinte: na hora que o teste.dat for criptografado sera gerado um arquivo teste.crp sendo que os quatro primeiros bytes desse arquivo serã: 'd','a','t','\0'. então quando ele for descriptografado sera gerado um arquivo teste.dat.

as primeiras 4 letras de teste.crp terão de ser dat\0 é isso que eu tenho de fazer??

Essa é uma boa idéia. No caso, *você* terá que mandar ler os quatro primeiros bytes na hora de descriptografar para saber qual a extensão (isso não é automático). E também terá de lembrar de ignorar esses quatro primeiros bytes na hora de descriptografar o arquivo (e gravar o descriptografado).

abraço graymalkin, você está sendo uma grande ajuda!!O que nã e facil de encontrar em alguns foruns

:)

Abraços,

Graymalkin

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,5k
×
×
  • Criar Novo...