题目:重写函数readlines,将输入的文本行存储到由main函数提供的一个数组中,而不是存储到调用alloc分配的存储空间中。该函数的运行速度比改写前快多少?
自我解答:
首先来看书中对文本排序功能实现的程序:
排序过程分为了三个步骤:
1. 读取所有输入行 2. 对文本行进行排序 3. 按次序打印文本行
源码如下:
#include <stdio.h>
#include <string.h>
#define MAXLINES 5000 /* max lines */
char *lineptr[MAXLINES];
int readlines(char *lineptr[], int nlines);
void writelines(char *lineptr[], int nlines);
void qsort(char *lineptr[], int left, int right);
int main()
{
int nlines;
if((nlines = readlines(lineptr, MAXLINES)) >= 0)
{
qsort(lineptr, 0, nlines - 1);
writelines(lineptr, nlines);
return 0;
}
else
{
printf("error: input too big to sort\n");
return 1;
}
}
#define MAXLEN 1000
int getline(char *, int);
char *alloc(int);
int readlines(char *lineptr[], int maxlines)
{