如何用C语言,读文件中某行某列的数据。
比如:有一个TXT文件,文件中有10行字母(或者数字),现在要复制第3行的第2到7个共6个字母。请问怎么实现(最好能写成一个子程序:可读任意行任意列的数据)?要用C来实现...
比如:有一个TXT文件,文件中有10行字母(或者数字),现在要复制第3行的第2到7个 共6个字母。请问怎么实现(最好能写成一个子程序:可读任意行任意列的数据)?要用C来实现,哪位大侠高手能帮忙实现。本人帐户分数不多了,悬赏不是很高,请谅解。
另外,请问怎么才能读某个文件夹中的所有TXT文件(这些TXT文件的名称不知道,只知道其路径),也是要用C来实现。上面一个问题最急,这个要是也能帮助解决,就太太太感激了。 展开
另外,请问怎么才能读某个文件夹中的所有TXT文件(这些TXT文件的名称不知道,只知道其路径),也是要用C来实现。上面一个问题最急,这个要是也能帮助解决,就太太太感激了。 展开
展开全部
char *read_date(int line,int row,int read_num,char *addr)
{
char date[10];
char ch;
int n=1;
FILE *fp;
if((fp=fopen(addr,"r"))==0)
{
printf("文件打开失败!");
return;
}
else
{
while((ch=fgetc(fp))!=EOF)
{
if(n==line)
break;
if(ch=='\n')
n++;
}
}
n=0;
fseek(fp,row-2,SEEK_CUR);
ch=fgetc(fp);
while((ch!=EOF)&&(n<read_num))
{
date[n]=ch;
ch=fgetc(fp);
n++;
}
date[n]='\0';
return date;
}
参数line:你要读的文件的第几行
参数row:你要读文件的第几列
参数read-num:你要读的字符个数
参数addr:对应文件的地址(如c:\\a.txt)
函数返回:存放你读的数据,以'\0'作为结束标志
{
char date[10];
char ch;
int n=1;
FILE *fp;
if((fp=fopen(addr,"r"))==0)
{
printf("文件打开失败!");
return;
}
else
{
while((ch=fgetc(fp))!=EOF)
{
if(n==line)
break;
if(ch=='\n')
n++;
}
}
n=0;
fseek(fp,row-2,SEEK_CUR);
ch=fgetc(fp);
while((ch!=EOF)&&(n<read_num))
{
date[n]=ch;
ch=fgetc(fp);
n++;
}
date[n]='\0';
return date;
}
参数line:你要读的文件的第几行
参数row:你要读文件的第几列
参数read-num:你要读的字符个数
参数addr:对应文件的地址(如c:\\a.txt)
函数返回:存放你读的数据,以'\0'作为结束标志
更多追问追答
追问
谢谢你的帮忙,但现在有个小问题,
while((ch=fgetc(fp))!=EOF)
{
if(n==line)
break;
if(ch=='\n')
n++;
} 这一段,应该是以判断是否回车,来跳到指定的行。但我以此程序为基础,验证了,不能跳到指定的行。
追答
首先你要确定你的文件是人为换行的(这样存在'\n'标志)还是自动换行的(自动换行不存在‘\n’标志),如果是自动换行的,你就得知道每行存放多少字节的数据,如每行10个字节的数据,那当读到第11个字节数据时,认为这是第二行的第一个数,读到21个字节数据时就是第三行的第一个数据,这样你应该明白怎么做了吧!
上面程序只适合于人为换行的,也就是说每行必定存在‘\n’标志,如果自动换行,行数就不好确定..你把文件缩小点,行数显示就多了,文件窗口放大一些,行数显示就少了..你就无法准确定位到指定的位置了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
lseek() 可以指定行
fgets()可以读取一行
fgets()可以读取一行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C的精髓→指针,会用指针就能解决了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询