我正在为我的 c 语言课程阅读 K&R,我对第 5.6 节的函数 readlines 有疑问:
/*readlines: read input lines*/
int readlines(char *lineptr[], int maxlines)
{
int len, nlines;
char *p, line[MAXLEN];
nlines=0;
while ((len=getline(line, MAXLEN))>0) //getline gets a line of chars and return its
//length. if the length is negative,
// no line exits.
if (nlunes>=maxlines || (p=alloc(len))==NULL) //alloc allocates storage for input
return -1;
else{
line[len-1]='\0' //**THIS IS THE PART I DON'T UNDERSTAND**
strcpy(p,line); //copies line into p (strings)
lineptr(nlines++)=p;
}
return nlines; /*return number of lines we could read*/
所以这个函数是一个排序函数的一部分,它使用 qsort 和指针按字典顺序对字符行数组进行排序。
我特别不明白以下行的作用
line[len-1]='\0' //**THIS IS THE PART I DON'T UNDERSTAND**
为什么我们必须删除“上一行”或“新行”?
此外,以下也不干净:
p=alloc(len)
我知道我们为 p 分配存储空间,它是一个指针。所以我们为内存中的行长度分配适当的存储空间。那是对的吗?