【发布时间】:2016-06-26 06:26:06
【问题描述】:
我的问题是,在给定 n 个文件的情况下,我试图只读取一定数量的文件。
比如我有两个文件,里面内容如下
测试1:
一只猫跑了
苹果
测试2:
男孩回家了
苹果是红色的
我希望输出是
test1:一只猫跑掉了
不是
test1:一只猫跑掉了
test2:苹果是红色的
这是我目前写的代码:
#include <stdio.h>
#include <string.h>
int main (int argc, char ** argv)
{
extern int searcher(char * name, char*search,int amount);
while(argc != 0){
if(argv[argc] !=NULL)
if(searcher(argv[argc],"a",1)) break;
argc-- ;
}
}
int searcher(char * name, char*search,int amount){
FILE *file = fopen (name, "r" );
int count = 0;
if (file != NULL) {
char line [1000];
while(fgets(line,sizeof line,file)!= NULL && count != amount)
{
if(strstr(line,search) !=NULL){
count++;
if(count == amount){
return(count);
}
printf("%s:%s\n", line,name);
}
}
fclose(file);
}else {
perror(name); //print the error message on stderr.
}
return(0);
}
【问题讨论】:
-
记住
fgets一次读一行,你可以轻松设置一个计数器并做while (count < x && fgets (.....)) {...} -
你能告诉我你的意思吗?请在上面的代码中添加编辑。
-
当然,但在我举个例子之前,你想从每个文件中读取多少行?或者你是在每个文件中搜索一个术语。看起来您正在尝试搜索(这很好),但这与从文件中严格读取
X行数是分开的。两者都需要吗? -
请更新您的问题并具体说明文件和行。目前,标题与问题第一行的内容不一致。此外,问题的任何澄清都需要在问题本身中,而不是在 cmets 中。
-
@Kusalananda:在获得答案之前进行了更改。由于时间短,目前处于dubio pro reo中。