C语言怎样读取TXT文档中两行字符之间的数据,如begin和end之间的3行数据

 我来答
金色潜鸟
2013-02-24 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5693万
展开全部
#include <stdio.h>#include <stdlib.h>
main( ) {
FILE *fin;
int a[1000],b[1000],n,i;
char one_line[80];
fin=fopen("abc.txt","r"); //打开文件
if (fin==NULL){printf("open file error\n");return 0;}

while(1){
if ( fgets(one_line,80,fin)==NULL)printf("read error\n");
if (strncmp(one_line,"begin",5)==0)break; // 寻找 begin 行 ,假定文件前面有许多别的内容
}

n=0;
for (i=0;i<1000;i++) {
if (fscanf(fin,"%d %d",&a[n],&b[n])!=2) break; //读到 end 结束
n++;
}

fclose(fin); // 关闭文件
printf("I read:\n");for (i=0;i<n;i++) printf("%d %d\n",a[i],b[i]); // 输出结果
return 0;
}
White_MouseYBZ
2013-02-24 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6623万
展开全部
#include "stdio.h"//
#include "string.h"//
#include "stdlib.h"//
void main(void){
FILE *fp;
int Decg[1000],i=0,j;
char Strf[6]="xyz";
if(!(fp=fopen("a.txt","r"))){
printf("Open the file fail...");
exit(0);
}
while(1){
fread(Strf,5,1,fp);
if(!strcmp(Strf,"begin")) break;
fseek(fp,-4,SEEK_CUR);
}
while(1){
fscanf(fp,"%d%s",Decg+i++,Strf);
if(!strcmp(Strf,"end")) break;
fseek(fp,-(long)strlen(Strf),SEEK_CUR);
}
fclose(fp);
for(j=0;j<i;printf("%d ",Decg[j++]));
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2013-02-24 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3476万
展开全部
上一个提问中的回答可以解决的,因为这儿给出了数据类型(int),将读出的字符串用函数atoi();转换即可。代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
char num[12];
FILE *fin = fopen("data.txt","rt");
if(fin == NULL) {
printf("打开文件失败!\n");
return 1;
}
fgets(num,12,fin); // 读出"begin"
while(feof(fin) == NULL) {
fscanf(fin,"%s",num);
if(strcmp(num,"end") == 0) break;
printf("%d ",atoi(num));
}
printf("\n");
fclose(fin);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
903870967
2013-02-24 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:116万
展开全部
这个没什么好的方法,就是打开文件,找到begin行,如果是找整行,你可以用getline()函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式