ssort.c

来自「unix环境下实现的cmm语言编译器」· C语言 代码 · 共 61 行

C
61
字号
/*ssort.c: 对文本行进行排序*/int puts(char *s);int printf(char *fmt, char *s);char *strcpy(char *p, char *line);char *malloc(int len);int strcmp(char *s, char *d);void qsort(void *lineptr[], int left, int right,			int (*comp)(void *, void*));char *lineptr[5000];int readlines(char *lineptr[], int nlines);void writelines(char *lineptr[], int nlines);int getline(char *buf, int len);int main(void){	int nlines;	if ((nlines = readlines(lineptr, sizeof lineptr)) >= 0) {		qsort((void **)lineptr, 0, nlines - 1, (int (*)(void*,void*))strcmp);		writelines(lineptr, nlines);		return 0;	} else {		puts("error: input too big to sort\n");		return 1;	}}/*readlines:读取输入行*/int readlines(char *lineptr[], int maxlines){	int len, nlines;	char *p, line[1000];	nlines = 0;	while ((len = getline(line, sizeof line)) > 0) {		if (nlines >= maxlines)			return -1;		if ((p = malloc(len)) == (void *)0)			return -1;		line[len-1] = 0;		strcpy(p, line);		lineptr[nlines] = p;		nlines = nlines + 1;	}	return nlines;}/*writelines:写输出行*/void writelines(char *lineptr[], int nlines){	int i = 0;	while (i < nlines) {		printf("%s\n", lineptr[i]);		i = i + 1;	}}

⌨️ 快捷键说明

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