C语言如何在txt中读取指定字符串的下一行数据?

文本数据中有一行一直开头是66666,
我需要每个66666的下一行数据,如何读取并保存到另一个txt文件中?
我用fgets函数有问题,没有彻底理解
希望大神帮帮忙,在线等指导,谢谢!!!

写了个代码,希望采纳,等分哦。这个代码还有问题,比如比较字符串后面还有多个6,比如一行数据多余1024,这些需要你自己动手实现。

记住把文件的绝对路径改成你自己的,我是在linux下写的。

#include <stdio.h>
#include <string.h>
#define bool int
#define false 0
#define true 1
#define MAX_NUM 1025
int main(int argc,char **argv)
{
/*fileSrc是查找文件的绝对路径*/
const char *fileSrc = "/home/xxx/workspace/c/xxx.text";
/*fileSave是找到合适字符串后保存文件的绝对路径*/
const char *fileSave = "/home/xxx/workspace/c/aaa.text";
const char *flagString = "66666";
FILE *fp_src = NULL,*fp_save;
char buf[MAX_NUM] = {0};
bool flag = false;
fp_src = fopen(fileSrc,"r");
if(fp_src == NULL)
return -1;

while(fgets(buf,sizeof(buf),fp_src) != NULL)
{
printf("buf= %s",buf);
if(flag == true)
{
fp_save = fopen(fileSave,"w+");
if(fp_save == NULL)
{
return -1;
}
fwrite(buf,1,sizeof(buf)-1,fp_save);
fclose(fp_save);
break;
}
if(0 == memcmp(buf,flagString,strlen(flagString)))
{
flag = true;
}
memset(buf,0,sizeof(buf));
}
fclose(fp_src);
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-05
用fgets读入一行,用sscanf 读出第一列数据
下面假定第一列数据作为字符串,用 sscanf(buf,"%s", 。。。格式读。
类似,整型用 %d 浮点用 %f %lf ....

#include <stdio.h>
#include <stdlib.h>
main(){
char buf[100];
char col[100][30];
int n=0;
FILE *fp = fopen("a.txt", "r");
while ( fgets(buf, 100, fp) != NULL) {
if ( sscanf(buf,"%s",col[n]) == 1){printf("%s\n", col[n]); n++; };
}
return 0;
}

如果要读每行第一个数,(只读一位数 用 格式 %1d):
int x[100];
...
while ( fgets(buf, 100, fp) != NULL) {
if ( sscanf(buf,"%1d",&x[n]) == 1){ printf("%d\n",x[n]);n++;};

C语言如何在txt中读取指定字符串的下一行数据?
\/*fileSave是找到合适字符串后保存文件的绝对路径*\/const char *fileSave = "\/home\/xxx\/workspace\/c\/aaa.text";const char *flagString = "66666";FILE *fp_src = NULL,*fp_save;char buf[MAX_NUM] = {0};bool flag = false;fp_src = fopen(fileSrc,"r");if(fp_src == NULL)retu...

如何用C语言读取txt文档中最后一行数据
如果想自由地读取txt文档任意位置,就只能使用随机读写数据文件的方式来读与写的操作。因为C语言里的随机读写数据文件提供了 “文件位置标记”和定位的相关函数。例如:rewind函数使文件位置标记指向文件开头 fseek函数改变文件位置标记,其中该函数的原型为:fseek(文件类型指针,位移量,起始点);如果仅仅是想...

如何用C语言读取文件特定字符之后的数字并进行操作
include <stdio.h>int main(){int a;double b,c,d;FILE *fp=fopen("data.txt", "r"); \/\/文件名请自行修改if ( fp == NULL )return -1;while( fscanf(fp,"%d %lf %lf %lf\\n", &a, &b, &c, &d ) == 4 ){if ( (int)(c+0.001)==10 )printf("%d\\n", a );}...

C语言如何读取txt文档的最后一行数据
用fseek定位到文件末尾 并且逐字符读取,读一次就手动fseek到前一个字符,直到读到回车换行就丢弃该字符并结束 然后将读到的所有字符反序就是需要的最后一行数据了

如何用c语言从txt文件中读取数据
用C语言从txt文件中读取数据,可以使用C标准库文件自带的文件接口函数进行操作。一、打开文件:FILE fopen(const char filename,const char mode);因为txt文件为文本文件,所以打开时选择的mode应为"r"或者"rt"。二、读取文件:读取文件应根据文件内容的格式,以及程序要求,选择读取文件的函数。可以使用...

C语言 读一个TXT 时能如何判断是否换行了
1、打开文件。使用fopen函数打开文件, 由于txt为文本文件,所以模式应选择"r"或者"rt"。比如 FILE *fp = fopen("in.txt", "r");2、按字节读取文件,并识别换行。int c;while((c=fgetc(fp)) != EOF)\/\/读取文件 直到文件结尾。 if(c=='\\n') printf("get a new line\\n");\/\/识...

c语言中如何从文件里读取一段字符串,至换行符
fgets读取一行,fgetc读取一个字符,fread读取你想要的长度 FILE *fp = fopen(fileName,"r");if (fp != NULL){ char buf[1024] = {0};fgets(buf,fp);} fclose(fp);

C语言读取文件如何读取最后一行?用fseek表示。如果最后一行有文字也有...
1 字节处fseek(fp, i, SEEK_END);\/\/读取一个字符ch = fgetc(fp);\/\/如果读取的字符不等于换行,如果等于换行说明是最后一行的上一行的换行符while (ch != '\\n'){\/\/文件内部指针从文件结尾向前移动i--;fseek(fp, i, SEEK_END);ch = fgetc(fp);}i = 0;ch = fgetc(...

如何使用C语言从TXT文件中读取如下格式的数据并存储与数组中?
1.fopen函数打开需要读取的文本,获取该文件的文件描述符 2.使用fscan()函数对文件进行读取。3.放到二维数组其实就是读取相应格式的数据,然后对应二维数组的每个位置 例如 include "stdio.h"#define M 300#define N 50void main(){ int i,j; float a[M][N]={0}; FILE *fp; if((fp=...

C语言怎么从TXT文件中读入数据?
1.用"记事本"创建a.txt文件,保存在一个文件夹中,设保存在d:\\之下 2.编写程序,并运行 include <stdio.h> int main( ){ int a[10][4]; \/*假定不超过10行,每行一定有4个元素*\/ int i,j;FILE *fp;\/*打开文件*\/ fp=fopen("d:\\\\a.txt","r"); \/*假设a.txt在d盘根目录下*\/ ...

相似回答