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

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

写了个代码,希望采纳,等分哦。这个代码还有问题,比如比较字符串后面还有多个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;
}
墨紫音
2015-10-05 · TA获得超过1.8万个赞
知道大有可为答主
回答量:2390
采纳率:56%
帮助的人:1047万
展开全部
用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++;};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式