gpt4 book ai didi

c - C语言逐行查找文件中的单词

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:47 26 4
gpt4 key购买 nike

我正在尝试编写代码逐行搜索文件中的单词并打印包含该单词的行。函数 fgetsgetline 似乎不起作用。

void FindWord(char *word , char *file){
char *line ;
line = (char*)malloc(1024) ;
int fd ;
fd = open(file , O_RDONLY );
while (fgets(line , sizeof(line) ,fd )!= NULL)
{
if (strstr(line , word )!= NULL)
{
printf("%s",line);
}
}
}

最佳答案

问题一

fgets() 需要一个 FILE* 而不是文件描述符。

改变

 int fd ;
fd = open(file , O_RDONLY );

 FILE* fp = fopen(file, "r");

并使用fp作为fgets的参数。

问题2

sizeof(line) 的计算结果不是 1024,正如您可能期望的那样。它只是评估指针的大小,这很可能是 48

改变

while (fgets(line , sizeof(line) ,fd )!= NULL)

while (fgets(line , 1024, fp )!= NULL)

更新

此外,由于您在对 malloc 的调用中对 1024 进行了硬编码,因此您不妨使用数组。然后,您可以使用 sizeof(line)

void FindWord(char *word , char *file){
char line[1024] ;
FILE* fp = fopen(file, "r") ;
while (fgets(line , sizeof(line) , fp )!= NULL)
{
if (strstr(line , word )!= NULL)
{
printf("%s",line);
}
}
}

关于c - C语言逐行查找文件中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com