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;
}