c语言,如何将未知数量的字符串存入一个字符串数组中?

具体是,我遍历了某个文件夹中所有的txt文件
然后要将这些txt文件的文件夹存起来
用二维数组还是二维指针?
怎么实现,本人新手,从Java转过来。
所以字符串什么的处理起来有点吃力。
求指教
说错了,是文件名。

真实应用的情况是很少需要把全部数据(比如整个文件)读入内存,一般都是读需要的一部分。所以一般只用固定大小的缓存空间比如buf[1024]就可以了。
比如楼主遍历的情况,一边遍历所有的txt文件,每遍历出一个txt就在同一个记录文件写一个或一行记录。这样就不需要全部读入内存。

C和Java的不同,就是如果在Java是用动态数列比如LIST装入这些文件名,C就要先编写实现动态数列,也可以实现。但处理楼主这种应用特例,有更好的算法就不需要先写动态数列
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-29
两种方法,要不一开始就申请一块足够大的内存,比如假设文件名最长不过100字节,你可以申请一个Nx100的二维数组。
还有一种方法是先申请字符串指针数组
char *p[N ]//N为文件名个数或最大文件名个数
然后在需要的时候进行动态分配,p[0]=(char *)new char [x]
第2个回答  2011-12-29
#include "stdio.h"
#include "string.h"
#include "dir.h"

void main()
{
char filename[500][60];
int i,num=0,done;
struct dfree dfree;
struct ffblk ffblk;

done = findfirst("*.txt",&ffblk,0);
while (!done)
{
strcpy(filename[num], ffblk.ff_name);
num++;
done = findnext(&ffblk);
}
for(i=0; i<num;i++)
printf("%s\n",filename[i]);
}本回答被提问者采纳
第3个回答  2011-12-29
char **filename;
int i=0;
while(1)
{
if(no more file) //if...else.... pseudo code
break;
else
get a txt file name
strcpy(filename[i], txtfilename);
i++;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网