如何用C语言,读文件中某行某列的数据。

比如:有一个TXT文件,文件中有10行字母(或者数字),现在要复制第3行的第2到7个共6个字母。请问怎么实现(最好能写成一个子程序:可读任意行任意列的数据)?要用C来实现... 比如:有一个TXT文件,文件中有10行字母(或者数字),现在要复制第3行的第2到7个 共6个字母。请问怎么实现(最好能写成一个子程序:可读任意行任意列的数据)?要用C来实现,哪位大侠高手能帮忙实现。本人帐户分数不多了,悬赏不是很高,请谅解。
另外,请问怎么才能读某个文件夹中的所有TXT文件(这些TXT文件的名称不知道,只知道其路径),也是要用C来实现。上面一个问题最急,这个要是也能帮助解决,就太太太感激了。
展开
 我来答
百度网友bd4cf2a31
2011-09-06 · TA获得超过332个赞
知道小有建树答主
回答量:333
采纳率:100%
帮助的人:348万
展开全部
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'作为结束标志
更多追问追答
追问
谢谢你的帮忙,但现在有个小问题,
while((ch=fgetc(fp))!=EOF)
{
if(n==line)
break;
if(ch=='\n')
n++;
} 这一段,应该是以判断是否回车,来跳到指定的行。但我以此程序为基础,验证了,不能跳到指定的行。
追答
首先你要确定你的文件是人为换行的(这样存在'\n'标志)还是自动换行的(自动换行不存在‘\n’标志),如果是自动换行的,你就得知道每行存放多少字节的数据,如每行10个字节的数据,那当读到第11个字节数据时,认为这是第二行的第一个数,读到21个字节数据时就是第三行的第一个数据,这样你应该明白怎么做了吧!
上面程序只适合于人为换行的,也就是说每行必定存在‘\n’标志,如果自动换行,行数就不好确定..你把文件缩小点,行数显示就多了,文件窗口放大一些,行数显示就少了..你就无法准确定位到指定的位置了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
折咏志0hfd5a
2011-09-06 · TA获得超过279个赞
知道小有建树答主
回答量:182
采纳率:0%
帮助的人:244万
展开全部
lseek() 可以指定行

fgets()可以读取一行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangjian_0816
2011-09-06 · TA获得超过258个赞
知道答主
回答量:67
采纳率:0%
帮助的人:41.5万
展开全部
C的精髓→指针,会用指针就能解决了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式