C语言中如何将文件中的某行的字符串读取出来?

RT例如我的文件中一行里是ABCDEF1020并且每一行都是%s%s%d%d的格式如何将他们分别读取出来进行使用呢?... RT
例如 我的文件中一行里是 ABC DEF 10 20
并且每一行都是 %s %s %d %d的格式
如何将他们分别读取出来进行使用呢?
展开
 我来答
mr_shj
推荐于2018-03-01 · TA获得超过2681个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1374万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MaxCols 2000     //设定每行字符数不超过MaxCols,根据变化调整 
//获取已经打开文件fp的第line行内容到stri,如果成功返回得到的字节数,
//如果没有那么多行,返回-2 
int getlinetxt(FILE *fp,int line,char *stri){
int i;
fseek(fp,0,0); //指针到文件最开始
for(i=0;i<line;i++) 
if(fgets(stri,MaxCols,fp)==NULL) //没有这么多行错误
return -2;
  return strlen(stri);
}
//获取filename文件的第line行内容到stri,如果成功返回得到的字节数,
//如果打开文件失败,返回-1,如果没有那么多行,返回-2 
int getfiletxt(char *filename,int line,char *stri){
FILE *fp;
if ((fp=fopen(filename,"r"))==NULL){
//打开文件错误,返回-1 
return -1;
}
return getlinetxt(fp,line,stri);
fclose(fp);
}
int main(){
char s[MaxCols];
int row=10, flag;
//以下例子是获取d:\temp.txt的第10行文本内容 
flag=getfiletxt("d:\\temp.txt",row,s);
if (flag==-1)
printf("打开文件错误\n");
else if(flag==-2)
printf("文件中的行数不足%d行\n",row);
else
printf("获取到的文本是: \n%s包含最后的换行符,长度=%d\n",s,flag);
}
阔气克克
2015-05-28 · TA获得超过485个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:466万
展开全部
所谓的某行你没有给出确切的定义,通常读文件采用的方法是将文件内容的全部,或者部分保存在缓存中,如果你是想读取第几行,那么就可以使用字符指针,寻找缓存中的'\n',并进行计数,找到想要的行。
如果想读取的是某个关键字所在的行,同样是可以使用字符指针,使用strncmp方法寻找关键字所在的位置,或者直接使用strstr方法查找。
需求不明确的时候不容易确定最佳的查找方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e0a2d43
推荐于2016-01-09 · TA获得超过861个赞
知道小有建树答主
回答量:444
采纳率:0%
帮助的人:311万
展开全部
#include<stdio.h>
#include<stdlib.h>
void main ()
{
char s1[80],s2[80];
int a1,a2;
FILE *fp;
if((fp=fopen("t.txt","r"))==NULL)
{
printf("open wrong");
exit(1);
}
fscanf(fp,"%s%s%d%d",s2,s1,&a1,&a2);
fprintf(stdout,"%s,%s,%d,%d\n",s1,s2,a1,a2);
}

把ABC DEF 10 20存在t.txt中
读取并保存在 s1,s2,a1,a2
输出
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
315208756
2010-04-23 · TA获得超过312个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:104万
展开全部
scanf("%s",s); //这是读入一个字符串,遇到空格回车就停止读入
gets(s); //这个是读入一整行,只有遇到回车才停止读入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-04-23
展开全部
用fscanf()就可以啦,

char a[80],b[80];
int c,d;

FILE *fp=fopen("data.txt","r");

fscanf(fp,"%s %s %d %d",a,b,&c,&d);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式