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++;};