📄 echo.c
字号:
/* * echo args, globbing is necessary. * usage: * echo [-n] [args ...] * \n \r \b \c \v \\ \f \t \NNN escapes supported * -n and \c mean dont echo the final newline. * * ++jrb bammi@cadence.com */#include <stdio.h>#if __STDC__# include <compiler.h>#else# define __PROTO(X) ()#endifchar **glob __PROTO((char *patt, int decend_dir));int contains_wild __PROTO((char *patt));void free_all __PROTO((void));int final_newline = 1; /* turned off by -n or \c */int main(argc, argv)int argc;char **argv;{ --argc; ++argv; if((*argv)[0] == '-') { if ((*argv)[1] == 'n') final_newline = 0; else { fputs("usage: echo [-n] [arguement ... ]\n", stderr); return 1; } --argc; ++argv; } while(argc--) { char *word = *argv; char **list; if(contains_wild(word) && (list = glob(word, 0))) { while(*list) { fputs(*list, stdout); if(*++list) putchar(' '); } free_all(); } else { char c; for(c = *word; c; c = (*word)? *++word : 0) { if(c != '\\') putchar(c); else { switch(*++word) { case 'b': putchar('\b'); break; case 'f': putchar('\f'); break; case 'n': putchar('\n'); break; case 'r': putchar('\r'); break; case 't': putchar('\t'); break; case 'v': putchar('\v'); break; case '\\': putchar('\\'); break; case 'c': final_newline = 0; break; default: putchar(*word); /* ?? */ case '0': { int n = 0; for(c = *++word; (c >= '0') && (c <= '7'); c = *++word) n = (n << 3) + (c - '0'); putchar(n); } } } } } if(*++argv) putchar(' '); } if(final_newline) putchar('\n'); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -