int main(int argc, char *argv[]) {
FILE *datafile, *outputfile;
char c, *line, *line1, *line2, *key, *search;
int i=0;
tree_t *tree;
if(argc > 4){
printf("Too many arguments");
exit(1);
}
datafile = fopen(argv[1], "r");
outputfile = fopen(argv[2], "w");
line = malloc(sizeof(char));
tree = make_empty_tree();
while((c=getc(datafile)) != EOF) {
*(line+i) = c;
i++;
line = realloc(line, (i+1)*sizeof(char));
if(c == ';'){
*(line+i) = '\0';
i=0;
line1 = line;
line = malloc(sizeof(char));
} else if(c=='\n') {
line2 = line;
tree = insert_tree(tree, line1, line2);
i=0;
line = malloc(sizeof(char));
}
}
/*traverse_tree(tree);*/
i=0;
key = malloc(sizeof(char));
while((c = getchar())!=EOF){
*(key+i) = c;
i++;
key = realloc(key, (i+1)*sizeof(char));
if(c == ';') {
*(key+i) = '\0';
i=0;
search = search_tree(tree, key);
fputs(search, outputfile);
}
}
fclose(datafile);
fclose(outputfile);
return 0;
}
在第二个while循环中 search_tree函数在树中搜索参数“key” 并将搜索结果输出到指针变量搜索 然后使用fputs
写入文件我希望能够将多个搜索结果写入文件 但每次运行fputs它都会删除之前的搜索结果并写入一个新的
我如何存储所有搜索结果?
答案 0 :(得分:2)
如果你想避免每次运行程序时都覆盖文件,那么你必须打开文件"追加"模式:
outputfile = fopen(argv[2], "a" );
此外:
realloc
及时使用一个字母是非常低效的。