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

RT
例如 我的文件中一行里是 ABC DEF 10 20
并且每一行都是 %s %s %d %d的格式
如何将他们分别读取出来进行使用呢?
最新回答
屋顶上的小猫咪

2024-05-03 04:19:36

#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);
}
余安

2024-05-03 03:15:14

所谓的某行你没有给出确切的定义,通常读文件采用的方法是将文件内容的全部,或者部分保存在缓存中,如果你是想读取第几行,那么就可以使用字符指针,寻找缓存中的'\n',并进行计数,找到想要的行。
如果想读取的是某个关键字所在的行,同样是可以使用字符指针,使用strncmp方法寻找关键字所在的位置,或者直接使用strstr方法查找。
需求不明确的时候不容易确定最佳的查找方式。
梦中你是主角

2024-05-03 03:43:59

#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
输出
蜜糖

2024-05-03 03:51:38

scanf("%s",s); //这是读入一个字符串,遇到空格回车就停止读入
gets(s); //这个是读入一整行,只有遇到回车才停止读入
╭⌒浅浅笑

2024-05-03 01:51:05

用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);