Dev - C++ - DOS format to Unix

 
Vista:

DOS format to Unix

Publicado por Nancy (1 intervención) el 29/11/2018 03:27:12
Deseo convertir DOS format to Unix, alguien tiene algun ejemplo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

DOS format to Unix

Publicado por Tom (65 intervenciones) el 29/11/2018 08:58:34
Pues es tan, tan, sencillo como sustituir "\r\n" en el fichero DOS por "\n".
Es mejor que uses una herramienta como, por ejemplo, en linux dos2unix (fromdos).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DOS format to Unix

Publicado por Nancy (1 intervención) el 29/11/2018 15:10:09
Si ya lo desarrollé a ultima hora publico el codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DOS format to Unix

Publicado por Nancy (1 intervención) el 30/11/2018 02:27:01
ahi lo tenes.:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <stdio.h>
 
main(argc, argv)
int argc;
char **argv;
{
    FILE *pnEntra, *pnOutput;
    int i, ch;
    char *temporal;
    char comando[100];
 
    if (argc < 2)
        exit(fprintf(stderr, "usar:  %s Archivo(s)\n", argv[0]));
    temporal = tmpnam(NULL);
 
    for (i = 1; i < argc; i++)
    {
        if ((pnEntra = fopen(argv[i], "r")) == NULL)
        {
            fprintf(stderr, "%s: No se puede abrir %s entrada.\n",
                    argv[0],  argv[i]);
            continue;
        }
 
        printf("Converting %s...", argv[i]);
 
        if ((pnOutput = fopen(temporal, "w")) == NULL)
        {
            fprintf(stderr, "%s: No se puede abrir el temporal %s para grabar.\n",
                    argv[0],  temporal);
            fclose(pnEntra);
            exit(1);
        }
 
        while ((ch = getc(pnEntra)) != EOF)
            if (ch != '\r')
                putc(ch, pnOutput);
 
        fclose(pnEntra);
        if (fclose(pnOutput))
            exit(fprintf(stderr, "%s: error al cerrar el temporal %s.\n",
                    argv[0], temporal));
 
        unlink(argv[i]);
 
        sprintf(comando, "cp %s %s", temporal, argv[i]);
        if (system(comando))
            exit(fprintf(stderr, "%s: error copiando %s a %s.",
                    argv[0], temporal, argv[i]));
 
        unlink(temporal);
        printf("Gooooooood.\n");
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DOS format to Unix

Publicado por Tom (65 intervenciones) el 30/11/2018 09:03:05
Pues lo has hecho bastante bien, en mi opinión.
Pero, por otra parte, has optimizado demasiado. Debes eliminar el '\r' _solo_ cuando va seguido de '\n' y respetarlo en cualquier otro caso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar