Where should be parameters used for output located in the function parameters list

Just my personal opinion, but if it reflects copy or assignment semantics, then I prefer to put them to the beginning, just like string and certain stdio functions in the C standard library do:

strcpy(dest, src);

looks like

dest = src;

and

fgets(buf, sizeof(buf), file);

looks like

buf = contents_of(file);

If, however, for some reason this is not the case, then I like to organize things so that input comes first, then output, so then I put output arguments at the end of the argument list.


Let me mention another point:

Input parameters can have default values. To use this feature, this (or these) parameter(s) nned to be at the end of a function's parameter list.
Therefore, and for the same reason stated by user529758 already, I also started to put output parameters at the beginning of the parameter list.


There are two schools of thought, exemplified by different functions in the C library:

Assignment order

memmove(target, source, size);

Input then output

sscanf(source, format, &out1, &out2, &out3);

If there's more than one output, usually put them at the end.