carefulputc.c

来自「Util-linux 软件包包含许多工具。其中比较重要的是加载、卸载、格式化、分」· C语言 代码 · 共 27 行

C
27
字号
/* putc() for use in write and wall (that sometimes are sgid tty) *//* Avoid control characters in our locale, and also ASCII control characters.   Note that the locale of the recipient is unknown. */#include <stdio.h>#include <ctype.h>#include "carefulputc.h"#define iso8859x_iscntrl(c) \	(((c) & 0x7f) < 0x20 || (c) == 0x7f)intcarefulputc(int c, FILE *fp) {	int ret;	if (c == '\007' || c == '\t' || c == '\r' || c == '\n' ||	    (!iso8859x_iscntrl(c) && (isprint(c) || isspace(c))))		ret = putc(c, fp);	else if ((c & 0x80) || !isprint(c^0x40))		ret = fprintf(fp, "\\%3o", (unsigned char) c);	else {		ret = putc('^', fp);		if (ret != EOF)			ret = putc(c^0x40, fp);	}	return (ret < 0) ? EOF : 0;}

⌨️ 快捷键说明

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