I am reading lines from a file and I want to paginate them when displaying, using popen()
and less
. I haven't been able to make it work and I couldn't find any examples specific to this topic. So here I am. Minimal compilable code example would be something like this:
#include <stdlib.h>
#include <stdio.h>
int main()
{
FILE* stream;
stream = popen("less", "w");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
fprintf(stream, "Line\n");
return 0;
}
How can I paginate multiple fprintf()
statements like these? Is it even possible the way I'm trying or should I take another approach?
Thank you very much.
Ok I figured it out. I was forgetting to close the pipe stream created into less
using pclose()
. Adding pclose(stream)
at the end solved the issue.