[英]Search for a specific line in text file in C
我有一个文本文件,我想从该文本文件中获取特定行。 文件内容如下所示:
<div class="logo_style">
<img src="/images/Gnome-Network-Wireless-NoTx-64.png">
<h2>Fast Actions</h2>
</div>
<div class="container">
<p><b><font color=green>Action "update_frequency" is sent.</font></b></p>
<br/><a href="/">[Back To Main Section]</a>
</div>
</body></html>
我只想搜索Action "update_frequency" is sent
的行Action "update_frequency" is sent
并将其打印到stdout。 我使用了strstr函数,但是当我打印由strstr
给定的指针时,它也给出了所有结尾行,它们出现在文本文件中所需的行之后。 所以我试图将返回的指针存储在char *str_result
。 然后我在str_dst
复制了str_result
的前10个字节,但是我得到的结果是segmentation fault (core dumped)
。 这是下面的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *file_r;
char *buffer;
buffer = malloc (100000);
char *str_result;
char str_dst[100];
file_r= fopen ("file_new.txt", "r");
fseek (file_r, SEEK_SET, 0);
while (fgets (buffer, 100000, file_r)!=NULL)
{
;
}
str_result = strstr(buffer, "Action");
memcpy (str_dst, str_result, 10);
printf("%s\n", str_dst);
fclose (file_r);
return 0;
}
有人可以建议我如何只获得所需的文本行,而不得到strstr所示的其他行吗?
提前致谢。
memcpy (str_dst, str_result, 10);
不插入/添加NULL终止符。
您必须添加str_dst[10]='\\0';
在memcpy
和printf
之间避免分段错误
fgets (buffer, 100000, file_r);
str_result = strstr(buffer, "Action ");//add space
size_t len = strchr(str_result, '<') - str_result;//length upto '<'
memcpy (str_dst, str_result, len);
str_dst[len] = '\0';//null-terminate
printf("%s\n", str_dst);
将文本文件视为充满字符的数组。 创建几个整数变量并使它们保持为0。创建一个for循环,如果出现一个特定字母,则使其中一个变量等于找到字符的数组中的位置。 接下来,考虑另一个特定字符,并重复上述相同操作,直到找到它。 让其中一个变量保存它的位置。 重复此循环,直到为字符串中的所有字符测试了数组。 接下来,创建一系列用于测试整数值的if语句,您可以通过获取单词中第二个字母的int位置值,然后从第一个字母的int位置值减去它,然后等于1来做到这一点。该字母2紧接在字母1之后。这似乎令人困惑,这不是一个简单的解决方法,但我希望这会有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.