怎样用c语言读取.txt文档的找出特定的字符串,并把对应的那一行全找出来,保存到另一个.txt文

中,我是新手,谁能帮忙解答一下,谢谢

最教科书的手法是kmp.去搜一下一大片都是.

可以用getline来获得内容.match上就写另一个文件即可追问

Kmp是什么意思?在.txt文档中,有空格,有符号,有数字有&&@?等等,没有汉字,有网址可以查阅吗

追答

kmp是一种算法,百度即可看到示例.

百度kmp算法 第一个就有c示例
不管什么符号,对算法来说是不在乎的,无非就是不同的值而已.
只是需要通过回车"\n"判断换行而已

追问

你好,可以在请问你一些问题吗,我要在.txt文档里面读出固定字符串(例如CNR)后面对应的据,每一行里面都有CNR,后面都有对应的数据,每一行的长度不是固定的,应该怎么处理,谢谢了

追答

kmp,编码字符串cnr,你可以得到每行cnr所在offset。然后不用多说了吧

追问

啊 是个新手 看的不是很懂,没有什么注释,可以麻烦帮忙编写一些代码吗?、每一行CNR,后面对应的数据保存到txt文档中 谢谢

追答

很容易写,但我不会写的.

你要是做作业,去找你隔壁的抄吧.

你要是真想学,只要动手百度一下--关键词都给你了,"kmp 算法".拿出代码改吧改吧立马可以做出来.这很困难么?

我当时对着书撸,手里拿着笔对着代码单步推,试图弄明白原理,从什么都不懂到徒手随便撸也就个把小时.新手就了不起啊,谁不是新手过来的.就知道伸手,建议换一行别坑那些辛辛苦苦养程序员的公司了好么


----------------------

kmp原理非常简单.已知一个短的字符串key(此处为CNR),对它编码.编码后的结果其实就是match错误后跳到哪个值上.然后拿着这个编码后的结果往长字符串上一路match.

若只是调用,kmp的结果一般为-1或某个自然数.若为-1表示没有match上任何片段,否则表示match上的片段在长字符串中的offset.

-----------------------

代码逻辑有难度么?

FILE * fin = fopen("data_file.txt","r");
FILE * fout = fopen("export_file.txt","w");
char buff[1024];
const char  * key = "CNR";
while(fgets(buff,1024,fin) != NULL) {
      int index = kmp(buff,key);
      if(index > 0 ) {
          fprintf(fout,"%s\n",buff + index);
      }
}
fclose(fin);
fclose(fout);


连提神都做不到好么

温馨提示:内容为网友见解,仅供参考
无其他回答

利用C语言读取含文件头的txt文本并将学生信息和成绩分别保存到数组?
1、fgets每次读取一行,根据文本格式找到姓名和分数的行字符串。2、分别解析行字符串,获取其中的姓名和成绩(成绩字符串拆解后用atof函数转换成浮点数保存在浮点数数组中)。3、通过malloc和realloc申请一个对应大小的结构数组(你题目要求用数组,换成链表更好)4、将解析的数据保存到结构数组成员中。注意...

怎么用C语言读取 TXT文件中的字符串
可以使用输入输出重定向来将TXT文本中的字符内容导入程序中,或者使用标准C库函数:fopen()和fgetc();先使用fopen()函数打开TXT文本文件,然后使用fgetc读取文本文件中的字符。读取全部文本中全部字符可以使用一个while循环加判断是否读取到文件结尾来实现:char ch;while((ch= fgetc(fp)) != EOF)这样...

C\/C++如何读取TXT文件的行数和把TXT文件的内容存到数组中
C语言读取TXT文件的行数并把把TXT文件的内容存到数组中,需要根据每行的内容(字符,数字,字符串)选取fgets、fscanf或者fgets。这里假设每行是一个字符串,每行不超过127个字符(用数组存字符串,最后一位存'\\0'),选取fgets进行读取。示例代码如下:include <stdio.h>#include <stdlib.h>int main...

C语言如何实现对txt文件的读取和写入
1、使用VS新建空工程,直接点击确定,如下所示。2、新建c文件,用于C语言编译器,输入main.c文件,如下所示。3、参考代码:include <stdio.h> int main(){ \/\/下面是写数据,将数字0~9写入到data.txt文件中 FILE *fpWrite=fopen("data.txt","w");if(fpWrite==NULL){ return 0;} for(int...

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)...

用C语言如何读取TXT文件中列数据?
(已知磁盘上的文件test2-2.txt文本文件中包含有3个字符串,每个串的长度小于80且3个串之间以换行符做分隔。编写的程序应实现:(1)从文件中读入3个串,并将它们按升序排序。(2)将排序后的3个串输出到屏幕,并追加输出到原来文件的尾部。)include <stdio.h> void main(){ FILE *fp;int i,j...

C语言取某个字符后的字符串存到另一个字符串
2014-12-18 用C语言:将一个字符串1复制到另一个字符串2的后面。并输出字... 6 2012-01-26 c语言 将一个字符串接到另一个字符串后面 7 2015-09-01 怎样用c语言读取.txt文档的找出特定的字符串,并把对应的那... 2 2013-08-05 C语言,如何把一个字符放到指定字符串之前 3 2014-12-12 c语言...

如何用c语言读取文本文件中的多行数据
1、用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。2、例程:include<stdio.h>#include<string.h>void main(){ char a[100],b[100],c[100]; int i=3,j=4,k=0; \/\/第三行,第四列 FILE *fp = fopen("data.t...

c语言如何读取txt文件的前2两行
} fgets(str, sizeof(str), fp ); \/\/读第一行 sscanf(str,"%d", &max ); while( fgets(str, sizeof(str), fp )) \/\/读其余行 { sscanf(str, "%d%d%d", &player, &round, &timein, &score ); \/\/从字符串读取相关数据 printf(...

如何在C语言中读取一个文件中的一段字符串去另一个新文件?
步骤1:首先需要声明两个文件指针,并让它们分别指向打开的旧文件和新文件,并检查文件是否被打开,以下是代码:FILE *f_old = NULL; \/\/指向旧文件的文件指针;FILE *f_new = NULL; \/\/指向新文件的文件指针;const char *old_name = "D:\\\\temp\\\\old.txt"; \/\/假设旧文件是D盘temp文件夹中...

相似回答