这个函数讲的是什么意思?求详解!

void edit(char (*lines)[MAXC])
{
int i,index;
system("cls"); //clrscr();
for(i=0,index=0; i<MAXL; i++)
if(lines[i][0]!=0)
{
index++;
printf("%d:%s",index,lines[i]);
}
printf("\n\nPlease type a new line:\n");
fflush(stdin);
for(i=0; i<MAXL; i++) //当输入的i小于可输入的最大行数时,i=i+1
{
if(lines[i][0]=='\0') /每行第一个字符作为标志位 空行可写入/
{
fgets(lines[i],MAXC,stdin);
return;
}
else
continue;
}
}

大概意思就是先输出lines字符数组指针后面指向的字符串,然后获取一行输入到追加到最后字符串的下一个字符数组里面,下面是我的理解和一个测试的例子,供参考,如下:

#include <stdio.h>
#include <stdlib.h>
#define MAXC 20
#define MAXL 10

void edit(char (*lines)[MAXC])
{
    int i,index;
    system("cls"); //clrscr(); 清空控制台的显示 
    for(i=0,index=0; i<MAXL; i++)  //循环遍历lines字符数组指针指向的各字符串并打印 
        if(lines[i][0]!=0)  //如果当前字符指针指向的不是空字符串 ,则打印此字符床 
        {
            index++;
            printf("%d:%s\n",index,lines[i]);
        }
    
    printf("\n\nPlease type a new line:\n");
    fflush(stdin);  //清空输入缓存,以便下次输入的是输入的新数据,而不是缓存中的旧数据 
    
    for(i=0; i<MAXL; i++) //当输入的i小于可输入的最大行数时,i=i+1
    {
        if(lines[i][0]=='\0') //每行第一个字符作为标志位 空行可写入
        {
            fgets(lines[i],MAXC,stdin); //从标准输入中获取最长MAXC个字符的一行输入 
            return;
        }  
        else  //如果没有输入换行,则继续读入 
            continue;
    }
}

int main(void) {
    
    char  lines[MAXL][MAXC]={"abcd","defg","hijk","lmno","opqr"};
    
    edit(lines);
    
    printf("after add , new  lines is :\n");
    int i;
    int index;
    for(i=0,index=0; i<MAXL; i++)
        if(lines[i][0]!=0)
        {
            index++;
            printf("%d:%s\n",index,lines[i]);
        }
        
    return 0;
}

img