diff tutorial (Motivated by Gary)

Written by: Henry Tseng

Instead of doing a manual comparasion between the sample output and your program's output, you can use a great tool called diff to help you.

Before we start, let's learn to save the output into a file first.

Method one: redirection

It's just like manually entering the input into your program, so no code changes needed.

After compiling your program, and let's assume the executable file is named a.out, input file named input.txt, and output file with your desired name, output.txt to be concise. Simple run:

./a.out < input.txt > output.txt

to load the data in input.txt to the program and store the output into output.txt.

If you just want to load the data from input.txt and show the output on the screen, you can run:

./a.out < input.txt

Method two: freopen()

Simply add two lines of code to the start of the main() function and you are good to go!

The syntax of freopen() is very simple:

freopen("file name", "r/w", stdin/stdout);

For example,if the input data is in input.txt, and the desired output file name is output.txt, simply add these two lines of code to the start of the main() function:

freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);

To check if freopen() successfully creates/reads the file or not, check the return value. If it's NULL, then something went wrong.

if(freopen("file name", "r/w", stdin/stdout) == NULL)
    YOUR_ERROR_MESSAGE_HERE;

Usage of diff

Assume that your answer to be compared against is in answer.txt, then simply run

diff answer.txt output.txt

to compare output.txt with answer.txt.

If no message showed up after running the command, then your code has passed the test! Otherwise, it's time to debug. :(