Nope. It can be done on a matrix of arbitrary size.
Numerical Recipes has a chapter on it complete with code. Because you're reading in the value of N from a file, you'll either have to use dynamically allocated arrays, or something like an STL container to hold all the values. And your various loops will need to run from 0 to N-1 or N (depending on whether you're running through rows or columns), instead of some value fixed at compile time.
Because you're likely going to be dealing with swapping rows, my recommendation would be to implement this using nested STL vectors:
CODE
vector<vector<double> > myMatrix(N, vector<double>(N+1,0.0))
This will create a nested (i.e. 2D) vector that can be accessed using normal row/column indices:
CODE
double value=myMatrix[row][col];//accesses value at (row, col)
and also allows you to swap two rows quite easily:
CODE
myMatrix[row1].swap(myMatrix[row2]);//swaps row1 with row2
If you've got an implementation in progress, feel free to post for feedback and assistance. Matrices are yummy (and a tip of the hat to you, Martyr2

).