Ok, for a lab I have to write the UNIX more filter in C, but I have got everything done execpt one thing. I only hvae it to where it can read 20 lines at a time. But what I want to do is if argv[1] == -Pxx where xx is the amount of lines you want to display at a time. but I need to use a scanf() and a atoi command I think but I have not idea on how to do that. Here is my code and where it sets the amount of line sto be printed is in bold.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


main(int argc, char *argv[])


{
int line_no = 0;
int i=1;
FILE *fp;
char ch;
int linec;
char line[256];


while ( i < argc )
{
if ( (fp = fopen(argv,"r")) != NULL )
{
printf("\n%s\n",argv);
while(!feof(fp) )
{
line_no = (++line_no) % 20;
if ( line_no == 0 )
{
printf("---Press enter for more lines---");
if ( (ch = getchar()) == 'q')
exit(0);
}


if ( fgets(line, 255, fp) != NULL )  /* not eof on line */
printf("%s", line);
}
fclose(fp);
}


++i;
}
}

Edited 3 Years Ago by happygeek: fixed formatting

read the parameter, strip away the -P, and use atoi on the rest of the string to convert it into an integer number.

could you right a peice of code for me that would do that for me please.

could you right a peice of code for me that would do that for me please.

He could, (heck I probably could), but how would you learn anything? Just take his instructions, and implement them the best way that you can think of. Then post that, and see what, if anything, we can suggest.

Ok, can you answer me this question how do you strip away the -P part.

there's a function to take a substring of a longer string. Find out what it is and how you use it.
Any manual, helpfile or other reference will tell you what to do.

Where would I find that at, because I have the program form working except from inputing how many lines you want to display at a time.

if you work on unix/linux, check the man page for getopt() function. It helps very much. At first it seems like an overhead, but in fact is very usefull.

This article has been dead for over six months. Start a new discussion instead.