比如:有一个TXT文件,文件中有10行字母(或者数字),现在要复制第3行的第2到7个 共6个字母。请问怎么实现(最好能写成一个子程序:可读任意行任意列的数据)?要用C来实现,哪位大侠高手能帮忙实现。本人帐户分数不多了,悬赏不是很高,请谅解。
另外,请问怎么才能读某个文件夹中的所有TXT文件(这些TXT文件的名称不知道,只知道其路径),也是要用C来实现。上面一个问题最急,这个要是也能帮助解决,就太太太感激了。
谢谢。在你的程序的基础上,我基本实现了想要的两种功能。现在还有一个问题,能否帮忙解答一下:
比如说 fp=fopen("123456.txt","r");这样可以打开123456.txt文件。但是因为我要从log.txt(你提供的程序得到的,里面内容是当前文件夹里所有TXT文件的名称)里提取内容(就是一个TXT名称,比如123456.txt)放到数组buff里面, fp=fopen(buff,"r");却不能打开。不知道为什么?又怎么解决?
没问题啊,你是不是数组用的不对!
int main()
{
int i = 0;
int j = 0;
char *s = NULL;
FILE *fp = NULL;
char filename[100];
char buf[100];
char fileNameArry[50][100];//假定最多只有50个文件,文件名称最长100
//实际使用的时候,可实时分配内存。
char (*p)[100];
p = fileNameArry;
memset(buf, 0x00, sizeof(buf));
char *log = "log.txt";
//sprintf(buf, "dir /B %s > %s", "*.txt", log);//字符串拼装
//system(buf);//调用系统命令
system("dir /B *.txt > log.txt");//调用系统命令
fp = fopen(log, "r");
if (fp == NULL)
printf("文件打开失败");
i= 0;
printf("----数组内容打印-文件读取前\n",fileNameArry[i]);
for (i=0; i 0)
{
printf("----处理文件:%s 开始 \n", p);
for (i=1; i<=3; i++)
{
s = getLineBuf(i, 1, 4 , (char *)p);
printf("%s\n", s);
if (s)
{
free(s); //手动释放内存,否则内存泄露
s = NULL;
}
}
printf("----处理文件:%s 结束 \n\n", p);
p++;
}
system("del log.txt");
return 0;
}
谢谢,可以实现了。我弄错的原因是没有对数组进行初始化,现在好了。谢谢各位的热心解答。
用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。
例程:
#include<stdio.h>谢谢你的帮忙,但现在有个小问题,
while((ch=fgetc(fp))!=EOF)
{
if(n==line)
break;
if(ch=='\n')
n++;
} 这一段,应该是以判断是否回车,来跳到指定的行。但我以此程序为基础,验证了,不能跳到指定的行。
首先你要确定你的文件是人为换行的(这样存在'\n'标志)还是自动换行的(自动换行不存在‘\n’标志),如果是自动换行的,你就得知道每行存放多少字节的数据,如每行10个字节的数据,那当读到第11个字节数据时,认为这是第二行的第一个数,读到21个字节数据时就是第三行的第一个数据,这样你应该明白怎么做了吧!
上面程序只适合于人为换行的,也就是说每行必定存在‘\n’标志,如果自动换行,行数就不好确定..你把文件缩小点,行数显示就多了,文件窗口放大一些,行数显示就少了..你就无法准确定位到指定的位置了!
呵呵,非常感谢。