unix2dos.c

来自「编码方式的解码示范uuencode and uudecode are in th」· C语言 代码 · 共 55 行

C
55
字号
/*
 *	Unix uses only a LF for \n.  MS-DOS uses CRLF.
 * This program puts the CR back in for MSDOS.
 *
 * Kenneth J. Hendrickson
*/

#ifdef MSDOS
#include <fcntl.h>
#include <io.h>
#include <process.h>
#endif
#include <stdio.h>

#define CTRL_J	'\012'	/* LF */
#define CTRL_M	'\015'	/* CR */

main(argc, argv)
int argc;
char **argv;

{
	FILE *in;
	char buffer[2];

	/* optional input arg */
	if (argc > 1) {
		if ((in = fopen(argv[1], "r")) == NULL) {
			(void) perror(argv[1]);
			exit(1);
		}
		argc--;
	} else
		in = stdin;

	if (argc != 1) {
		(void) fprintf(stderr, "Usage: unix2dos [infile]\n");
		exit(2);
	}

#ifdef MSDOS
	/* don't translate CRLF into LF when reading */
	(void) setmode(fileno(in), O_BINARY);

	/* don't translate LF into CRLF when writing */
	(void) setmode(fileno(stdout), O_BINARY);
#endif

	while (fread(buffer, sizeof (char), 1, in) == 1) {
		if (buffer[0] == CTRL_J)
			(void) fputc(CTRL_M, stdout);	/* add a CR before the LF */
		(void) fputc(buffer[0], stdout);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?