c语言写i<数组长度,c语言怎么实现数组长度自增长

c语言如何实现数组长度自增长?

我通常看到的c代码,对于数组的定义,通常是先给出了长度,但是假如我定义了个数组

int a[10];

如果我需要通过键盘输入对数组a进行赋值,假如我输入3元素,那么将有7个空间被浪费,假如输入想输入十一个元素,数组存储空间又不够,请问如何通过代码实现c语言数组长度的自增长,以解决上面的问题?

------解决方案--------------------

仅供参考//输出PROG中有但LIST中没有的文本行,即集合PROG-LIST

#include 

#include 

#include 

#include 

#define MAXCHARS 512

int MAXLINES=10000,MAXLINES2;

char *buf,*buf2;

char PROG[256]="PROG";//程序Program需要的文件列表

char LIST[256]="LIST";//dir /b /s生成的实际文件列表List

FILE *fp,*fl;

int i,c,n,L,hh;

int ignore_case=0;

char ln[MAXCHARS];

int icompare(const void *arg1,const void *arg2) {

return stricmp((char *)arg1,(char *)arg2);

}

int compare(const void *arg1,const void *arg2) {

return strcmp((char *)arg1,(char *)arg2);

}

int main(int argc,char **argv) {

if (argc>1) strcpy(PROG,argv[1]);//命令行参数1覆盖PROG

if (argc>2) strcpy(LIST,argv[2]);//命令行参数2覆盖LIST

if (argc>3) ignore_case=1;//若存在命令行参数3,忽略大小写

if ((fl=fopen(LIST,"rt"))==NULL) {

fprintf(stderr,"Can not open %s\n",LIST);

fprintf(stderr,"Usage: %s [PROG] [LIST] [-i]\n",argv[0]);

return 1;

}

if ((fp=fopen(PROG,"rt"))==NULL) {

fclose(fl);

fprintf(stderr,"Can not open %s\n",PROG);

fprintf(stderr,"Usage: %s [PROG] [LIST] [-i]\n",argv[0]);

return 2;

}

buf=(char *)malloc(MAXLINES*MAXCHARS);

if (NULL==buf) {

fclose(fl);

fclose(fp);

fprintf(stderr,"Can not malloc(%d LINES*%d CHARS)!\n",MAXLINES,MAXCHARS);

return 4;

}

n=0;

hh=0;

i=0;

while (1) {

if (fgets(ln,MAXCHARS,fl)==NULL) break;//

hh++;

L=strlen(ln)-1;

if ('\n'!=ln[L]) {//超长行忽略后面内容

fprintf(stderr,"%s Line %d too long(>%d),spilth ignored.\n",LIST,hh,MAXCHARS);

while (1) {

c=fgetc(fl);

if ('\n'==c

------解决方案--------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值