A finite difference scheme based on flux difference splitting is presented for the solution of the one-dimensional shallow water equations in open channels. A linearised problem, analogous to that of Riemann for gas dynamics, is defined and a scheme, based on numerical characteristic decomposition, is presented for obtaining approximate solutions to the linearised problem. The method of upwind differencing is used for the resulting scalar problems, together with a flux limiter for obtaining a second order scheme which avoids non-physical, spurious oscillations. The scheme is applied to a problem of flow in a river whose geometry induces a region of supercritical flow.