Compare files, returning first differing line Exercise 7-6 from the K&amp;R book.
Compares 2 files, printing the line number and content with the first dissimilarity. 
What am I doing that could be improved?

#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

#define MAXLINE 100

/* compare: compare files, printing first differing line */
int main(int argc, char *argv[])
{
    FILE *fp1, *fp2;
    char line1[MAXLINE], line2[MAXLINE];
    int i;
    char *prog = argv[0];

    /*require 2 files to comp*/
    if (argc != 3)
    {
        fprintf(stderr, "Incorrrect usage: got %d arguments, expected 3", argc);
        exit(1);
    }
    /*attempt to open files*/
    if (!( (fp1 = fopen(*++argv, "r")) &amp;&amp; (fp2 = fopen(*++argv, "r")) ))
    {
        fprintf(stderr, "%s: can't open %s\n", prog, argv[1] || argv[2]);
        exit(2);
    }
    /*read line from each file*/
    for (i = 0; fgets(line1, MAXLINE, fp1) &amp;&amp; fgets(line2, MAXLINE, fp2); i++)
    {
        if (strcmp(line1, line2))
        {
            /* print line # and line that differed */
            fprintf(stdout, "Line %d\n%s: %s\n%s: %s", i, argv[1], line1, argv[2], line2);
            break;
        }
    }
}
Perfect code does not exist, it's all a matter of opinion, but I would write the handling of the program arguments differently. 
The first argument is the name of the program so you dont expect 3 arguments, but just 2 from the user's perspective. 
Also, I would change the *++argv x2 into argv[1] and argv[2] to make more clear what you mean with the program arguments.

And I would explicitly check the retrun value of strcmp to make it more clear that you are checking for inequality.

So not if (strcmp()) but if (strcmp() != 0)

    if (argc != 3)
    {
        fprintf(stderr, "Incorrrect usage: got %d arguments, expected TWO", argc);
        exit(1);
    }
    /*attempt to open files*/
    if (!( (fp1 = fopen(argv[1], "r")) &amp;&amp; (fp2 = fopen(argv[2], "r")) ))
    {
        fprintf(stderr, "%s: can't open %s\n", prog, argv[1] || argv[2]);
        exit(2);
    }
    /*read line from each file*/
    for (i = 0; fgets(line1, MAXLINE, fp1) &amp;&amp; fgets(line2, MAXLINE, fp2); i++)
    {
        if (strcmp(line1, line2) != 0)
        {
            /* print line # and line that differed */
            fprintf(stdout, "Line %d\n%s: %s\n%s: %s", i, argv[1], line1, argv[2], line2);
            break;
        }
    }