C语言中如何将文件中的某行的字符串读取出来?
RT例如我的文件中一行里是ABCDEF1020并且每一行都是%s%s%d%d的格式如何将他们分别读取出来进行使用呢?...
RT
例如 我的文件中一行里是 ABC DEF 10 20
并且每一行都是 %s %s %d %d的格式
如何将他们分别读取出来进行使用呢? 展开
例如 我的文件中一行里是 ABC DEF 10 20
并且每一行都是 %s %s %d %d的格式
如何将他们分别读取出来进行使用呢? 展开
5个回答
展开全部
#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);
}
展开全部
所谓的某行你没有给出确切的定义,通常读文件采用的方法是将文件内容的全部,或者部分保存在缓存中,如果你是想读取第几行,那么就可以使用字符指针,寻找缓存中的'\n',并进行计数,找到想要的行。
如果想读取的是某个关键字所在的行,同样是可以使用字符指针,使用strncmp方法寻找关键字所在的位置,或者直接使用strstr方法查找。
需求不明确的时候不容易确定最佳的查找方式。
如果想读取的是某个关键字所在的行,同样是可以使用字符指针,使用strncmp方法寻找关键字所在的位置,或者直接使用strstr方法查找。
需求不明确的时候不容易确定最佳的查找方式。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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
输出
#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
输出
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf("%s",s); //这是读入一个字符串,遇到空格回车就停止读入
gets(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);
char a[80],b[80];
int c,d;
FILE *fp=fopen("data.txt","r");
fscanf(fp,"%s %s %d %d",a,b,&c,&d);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询