⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textstrp.c

📁 assoeted源码
💻 C
字号:
/*
 *     Copyright (C) 1993  Eric E. Moore and Thomas W. Strong
 *
 *     All rights reserved.  Any unauthorized distribution of this
 *     program is prohibited.
 */

/*
  strip out non-alphabetic characters, replacing them with an ascii
  description if so desired.

  This isn't exactly the most elegant way to write this, but it gets
  the job done.
  */

#include "header.h"

static char * initial_replacements[] = {
    "!", "Bang",		/* 0, 1 */
     "\"", "DoubleQuote",
     "#", "Hash",
     "$", "Dollar",
     "%", "Percent",
     "&", "Ampersand",		/* 10,11 */
     "'", "SingleQuote",
     "(", "OpenParen",
     ")", "CloseParen",
     "*", "Splat",
     "+", "Plus",		/* 20,21 */
     ",", "Comma",
     "-", "Dash",
     ".", "Period",
     "/", "Slash",
     "0", "Zero",		/* 30,31 */
     "1", "One",
     "2", "Two",
     "3", "Three",
     "4", "Four",
     "5", "Five",		/* 40,41 */
     "6", "Six",
     "7", "Seven",
     "8", "Eight",
     "9", "Nine",
     ":", "Colon",		/* 50,51 */
     ";", "Semicolon",
     "<", "LessThan",
     "=", "Equal",
     ">", "GreaterThan",
     "?", "QuestionMark",	/* 60,61 */
     "@", "At",
     "[", "OpenBracket",
     "\\", "Backslash",
     "]", "CloseBracket",
     "^", "Circumflex",		/* 70,71 */
     "_", "Underscore",
     "`", "Backquote",
     "{", "OpenBrace",
     "|", "Pipe",
     "}", "CloseBrace",		/* 80,81 */
     "~", "Tilde"		/* 82,83 */
};

int main(int argc, char * argv[])
{
    char c;
    int z;
    extern int opterr;
    extern char *optarg;
    int errflg = 0;
    int use_alpha= FALSE;
    int just_display = FALSE;
    char replacements[128][128];

    for (z = 0; z < 128; z++) {
	*(replacements[z]) = '\0';
    }
    for (z = 0; z <= 83; z = z + 2) {
	c = *(initial_replacements[z]);
	strcpy(replacements[(int)c], initial_replacements[z + 1]);
    }
    
    opterr = 0;
    while ((z = getopt(argc, argv, "apr:i:o:")) != EOF) {
	switch ((char)z) {
	case 'i':
	    if (freopen(optarg, "r", stdin) == NULL) {
		file_open_error();
	    }
	    break;
	case 'o':
	    if (freopen(optarg, "w", stdout) == NULL) {
		file_open_error();
	    }
	    break;
	case 'a':
	    use_alpha = TRUE;
	    break;
	case 'p':
	    just_display = TRUE;
	    break;
	case 'r':
	    strcpy(replacements[(int)optarg[0]], (optarg + 1));
	    break;
	case '?':
	    errflg = TRUE;
	}
    }
    if (errflg) {
	usage(TEXTSTRP_USAGE);
    }

    if (just_display) {
	for (z = 0; z <= 127; z++) {
	    if (*(replacements[z]) != '\0') {
		printf("%3d %c: %s\n", z, (char)z, replacements[z]);
	    }
	}
	return(0);
    }
    
    while ((z = getchar()) != EOF) {
	c = (char)z;
	if (isalpha(c)) {
	    putchar(c);
	} else if (use_alpha) {
	    printf("%s", replacements[(int)c]);
	}
    } 
    return(0);
}

⌨️ 快捷键说明

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